{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 摄取和检索（Ingestion & Retrieval）\n",
    "\n",
    "KM 架构可以分为两大块：摄取和检索。\n",
    "\n",
    "以下代码使用了预定义的[Config/PrepareEnv.cs](Config/PrepareEnv.cs) 文件来快速安装依赖包并导入已抽象的类文件，然后注册并激活 Memory 服务："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div><div></div><div></div><div><strong>Installed Packages</strong><ul><li><span>dotenv.net, 3.2.1</span></li><li><span>Microsoft.KernelMemory.AI.AzureOpenAI, 0.98.250324.1</span></li><li><span>Microsoft.KernelMemory.Core, 0.98.250324.1</span></li><li><span>Microsoft.KernelMemory.MemoryDb.Qdrant, 0.98.250324.1</span></li></ul></div></div>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "//通过引入Config/PrepareEnv.cs文件来快速安装依赖包并导入已抽象的类文件，然后注册并激活 Memory 服务：\n",
    "\n",
    "#!import Config/PrepareEnv.cs\n",
    "\n",
    "var memory = GetSimpleMemory();"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "iVBORw0KGgoAAAANSUhEUgAABfoAAAOECAYAAAD5e4BTAAAgAElEQVR4Aeydh3dUVfeGf3/Mp36fFQtIBxsIioiKIjYEG1bsYqH33gmh9xpKQgcBRaT33iH03oNg2b/17MkZL0MSAiSQgde17powc8u5z9l3nPXufd79f6b/REAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEkpbA/yXtyDVwERABERABERABERABERABERABERABERABERABERABERABk9CvIBABERABERABERABERABERABERABERABERABERABERCBJCYgoT+JJ09DFwEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEJ/YoBERABERABERABERABERABERABERABERABERABERABEUhiAhL6k3jyNHQREAEREAEREAEREAEREAEREAEREAEREAEREAEREAERkNCvGBABERABERABERABERABERABERABERABERABERABERCBJCYgoT+JJ09DFwEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEJ/YoBERABERABERABERABERABERABERABERABERABERABEUhiAhL6k3jyNHQREAEREAEREAEREAEREAEREAEREAEREAEREAEREAERkNCvGBABERABERABERABERABERABERABERABERABERABERCBJCYgoT+JJ09DFwEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEJ/YoBERABERABERABERABERABERABERABERABERABERABEUhiAhL6k3jyNHQREAEREAEREAEREAEREAEREAEREAEREAEREAEREAERkNCvGBABERABERABERABERABERABERABERABERABERABERCBJCYgoT+JJ09DFwEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEJ/YoBERABERABERABERABERABERABERABERABERABERABEUhiAhL6k3jyNHQREAEREAEREAEREAEREAEREAEREAEREAEREAEREAERkNCvGBABERABERABERABERABERABERABERABERABERABERCBJCYgoT+JJ09DFwEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEJ/YoBERABERABERABERABERABERABERABERABERABERABEUhiAhL6k3jyNHQREAEREAEREAEREAEREAEREAEREAEREAEREAEREAERkNCvGBABERABERABERABERABERABERABERABERABERABERCBJCYgoT+JJ09DFwEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEJ/YoBERABERABERABERABERABERABERABERABERABERABEUhiAhL6k3jyNHQREAEREAEREAEREAEREAEREAEREAEREAEREAEREAERkNCvGBABERABERABERABERABERABERABERABERABERABERCBJCYgoT+JJ09DFwEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEJ/YoBERABERABERABERABERABERABERABERABERABERABEUhiAhL6k3jyNHQREAEREAEREAEREAEREAEREAEREAEREAEREAEREAERkNCvGBABERABERABERABERABERABERABERABERABERABERCBJCYgoT+JJ09DFwEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEJ/YoBERABERABERABERABERABERABERABERABERABERABEUhiAhL6k3jyNHQREAEREAEREAEREAEREAEREAEREAEREAEREAEREAERkNCvGBABERABERABEUgyAn+Z/X1cmxgoBhQDigHFgGKgCMfAXxeO2z9//2lm/yTZ7wwNVwREQAREQASSk4CE/uScN41aBERABERABG5fAn+fMjs/W5sYKAYUA4oBxYBioIjGwD9Zs+zUvgy7mLXP/vn74u37m0V3LgIiIAIiIAI3kICE/hsIW5cSAREQAREQAREoAAIS+iVsFVFhSwkoJeAUA4oBxUAsBv4+O932r+tsJzLT7WLWAbN//iqAHwA6hQiIgAiIgAiIQF4EJPTnRUefiYAIiIAIiIAIFD0CEvol9EvoVwwoBhQDioEiHQMI/fvWdLB9axH7J3hlf9H7QaERiYAIiIAIiMCtRUBC/601n7obERABERABEbj1CUjoL9LijqpZVdGsGFAMKAYUAzGhv73tXdXW9q/t4pX9F87utH/+wbNf/4mACIiACIiACBQGAQn9hUFV5xQBERABERABESg8AhL6JfSrklcxoBhQDCgGinQM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AiRAAiRAAiRAAiRAAiRAArVMgEJ/LQPlcCRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiTwOQlQ6P+ctHktEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEqhlAhT6axkohyMBEiABErAeAfjpo0Fy8IVzcu/owQoPNCh+6nNR0Eehsj4P1pspRyYBEiABEiABEiABEiABEiABEiABEiCBz0eAQv/nY80rkQAJkAAJfCIBNClOjoqQS1vWyfF50+X4vN/LPdwXzZarDtu0gXB1mu1+4rR4OgmQAAmQAAmQAAmQAAmQAAmQAAmQAAnUKQEK/XWKnxcnARIgARIgARIgARIgARIgARIgARIgARIgARIgARIggU8jQKH/0/jxbBIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARKoUwIU+usUPy9OAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAp9GgEL/p/Hj2SRAAg2UQGFurkT43RX7/t3kys4tkhYfV+9WWlRQIJH+9+TEH9Pl9D8LJOttsljTj74wP0+iAv1k9+Be4rN9o6TGRtc7JpwQCZAACZAACZAACZAACZAACZAACZAACXyJBCj0f4l3nWsmARskkJ+dJWE3rornqn8k2OuslJSUWHUVBTnZEnrdV1Y2+U7OrfhLUqKjrHq9jxm8KD9fwm5elX2jBsrhKWMk402ivCsu/pihqnUOkh8vbt+QNS1/lDPLFktyZHi1zqutD6XFxco9F2dxnjTKfLgtmCWR/velIDenti7DcUiABEiABEiABEiABEiABEiABEiABEjA5ghQ6Le5W8YJk8CXSSAnPU0CTh4Tx2H95KbTLgr9IirqZyS+VrE//O4tKczLtSqXuhL63xUXyasHAXJhwyrZ2a+LLPvxK/OxuvkPcnDCCAlwd5X0hNdf5peDqyYBEiABEiABEiABEiABEiABEiABEvjiCVDo/+JDgABIwDYIUOiv+/tUV0J/bka63HTarbsWTv+zSK477jQf7gtnyYb2TcV50mh5ft1XigsL6x4UZ0ACJEACJEACJEACJEACJEACJEACJEACn5kAhf7PDJyXIwES+DgCFPo/jlttnlVXQn9mcpI88HATP9fDkhwZUWpJ8U9DxG3+TLHr01mu77GT7JS3pd7nP0iABEiABEiABEiA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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 摄取记忆\n",
    "\n",
    "KM 摄取组件利用一系列连续步骤的底层管道，接受一些数据作为输入，例如文件、URL 或字符串，并逐步将输入转换为**Memory Records（记忆记录）**。当客户端发送文件时，服务首先将数据保存在内容存储中，例如 Azure Blob 或本地磁盘。在此阶段，客户端保持连接，发送数据并等待数据存储完成。只有当此操作完成后，KM 才会释放客户端请求并启动异步管道，以在不阻塞客户端的情况下完成摄取。KM 摄取提供了一个默认管道：\n",
    "1. 提取文本\n",
    "2. 将文本分割成分区\n",
    "3. 为每个分区生成嵌入向量\n",
    "4. 将嵌入向量和元数据保存到特定数据库\n",
    "\n",
    "每个步骤都依赖于前一个步骤成功完成后才能开始，这些步骤由核心库附带的处理程序实现。步骤列表和处理程序的逻辑可以自定义。具体自定义流程，在另外的章节单独阐述。\n",
    "\n",
    "KM 提供了系列接口去导入数据源（文本、文件、网页），每个方法都有多个重载：\n",
    "* ImportDocumentAsync：用于导入文件，支持一次导入多个文件\n",
    "* ImportTextAsync：用于导入文本\n",
    "* ImportWebPageAsync：用于导入网页\n",
    "\n",
    "其中每个方法，都有以下几个可选参数：\n",
    "* documentId： 文档 ID，不指定则系统会随机生成一个ID\n",
    "* tags：标签，key-value 集合\n",
    "* index：索引，不指定时，则默认值为`default`\n",
    "\n",
    "给数据源打标记，就是通过以上三个参数。这三个参数之间的关系如下图所示：\n",
    "![index-document-tags](attachment:image.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 导入文件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "// 定义要导入的文档，并打标签\n",
    "var doc = new Document(\"km_overview\").AddFiles([\"Config/KM_Overview.pdf\"])\n",
    "                                    .AddTag(\"about\", \"km\")\n",
    "                                    .AddTag(\"type\", \"overview\");\n",
    "// 导入文档到指定的索引下\n",
    "await memory.ImportDocumentAsync(document: doc, index: \"kernel-memory-index\");\n",
    "\n",
    "// 也可以构造`DocumentUploadRequest`对象来导入文档\n",
    "// var docUploadRequest = new DocumentUploadRequest(document: doc, index: \"index1\");\n",
    "// await memory.ImportDocumentAsync(docUploadRequest);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 导入文本"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "var text = \"\"\"\n",
    "Kernel Memory leverages vector storage to save the meaning of the documents ingested into the service, solutions like Azure AI Search, Qdrant, Elastic Search, Redis etc.\n",
    "\n",
    "Typically, storage solutions offer a maximum capacity for each collection, and often one needs to clearly separate data over distinct collections for security, privacy or other important reasons.\n",
    "\n",
    "In KM terms, these collection are called “indexes”.\n",
    "\n",
    "When storing information, when searching, and when asking questions, KM is always working within the boundaries of one index. Data in one index never leaks into other indexes.\n",
    "\"\"\";\n",
    "\n",
    "await memory.ImportTextAsync(\n",
    "    text: text, \n",
    "    documentId: \"km_concept_index\", \n",
    "    tags: new TagCollection()\n",
    "    {\n",
    "        { \"about\", \"km\" },\n",
    "        { \"type\", \"concept\" }\n",
    "    },\n",
    "    index: \"kernel-memory-index\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 导入网页"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "await memory.ImportWebPageAsync(\n",
    "    url: \"https://raw.githubusercontent.com/microsoft/kernel-memory/refs/heads/main/docs/concepts/document.md\", \n",
    "    documentId: \"km_concept_document\", \n",
    "    tags: new TagCollection()\n",
    "    {\n",
    "        { \"about\", \"km\" },\n",
    "        { \"type\", \"concept\" }\n",
    "    },\n",
    "    index: \"kernel-memory-index\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 检索数据\n",
    "\n",
    "当文本文件经过提取、分片、嵌入、汇总保存到向量数据库后，就可以对记忆进行问答和检索。但是一个知识库可能包含多个知识来源，为了提高问答和检索的准确性，可以通过限定问答和检索范围。而这就需要在摄取文本文件时对知识来源进行有效的标记（指定documentId、index和tags），从而在检索时能根据有效的标记对记忆进行过滤。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 按索引过滤\n",
    "在对知识库进行问答和检索时，一次只能在特定的一个索引中进行，也就是一次问答和检索不能跨索引进行。\n",
    "* 如果需要跨索引，则需要执行多次问答和检索。\n",
    "* 如果未指定索引，则默认在`default` 索引下检索。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<details open=\"open\" class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Kernel Memory (KM) is a multi-modal AI service designed for efficient indexing of datasets through custom continuous data hybrid pipelines. It supports features such as Retrieval Augmented Generation (RAG), synthetic memory, prompt engineering, and custom semantic memory processing. KM is available ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>StreamState</td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td>Question</td><td><div class=\"dni-plaintext\"><pre>What is Kernel Memory?</pre></div></td></tr><tr><td>NoResult</td><td><div class=\"dni-plaintext\"><pre>False</pre></div></td></tr><tr><td>NoResultReason</td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td>Result</td><td><div class=\"dni-plaintext\"><pre>Kernel Memory (KM) is a multi-modal AI service designed for efficient indexing of datasets through custom continuous data hybrid pipelines. It supports features such as Retrieval Augmented Generation (RAG), synthetic memory, prompt engineering, and custom semantic memory processing. KM is available as a web service, a Docker container, a plugin for ChatGPT/Copilot/Semantic Kernel, and as a .NET library for embedded applications.\n",
       "\n",
       "KM utilizes advanced embeddings and large language models (LLMs) to enable natural language querying for obtaining answers from indexed data, complete with citations and links to the original sources. It is designed for seamless integration as a plugin with Semantic Kernel, Microsoft Copilot, and ChatGPT, enhancing data-driven features in applications built for popular AI platforms.\n",
       "\n",
       "Kernel Memory can operate as an asynchronous web service, allowing the ingestion of thousands of documents without blocking applications. It can also run in serverless mode, embedding a MemoryServerless class instance in .NET backend/console/desktop apps in synchronous mode. This approach is also applicable in ASP.NET Web APIs and Azure Functions.\n",
       "\n",
       "KM is built on feedback and lessons learned from developing Semantic Kernel (SK) and Semantic Memory (SM). It provides features such as storing files, extracting text from files, and securing users&#39; data. The KM codebase is entirely in .NET, making it accessible from any language, tool, or platform, including browser extensions and ChatGPT assistants.\n",
       "\n",
       "KM leverages vector storage solutions like Azure AI Search, Qdrant,</pre></div></td></tr><tr><td>TokenUsage</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.TokenUsage</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Timestamp</td><td><span>2025-04-03 02:52:49Z</span></td></tr><tr><td>ServiceType</td><td><div class=\"dni-plaintext\"><pre>Azure OpenAI</pre></div></td></tr><tr><td>ModelType</td><td><div class=\"dni-plaintext\"><pre>TextGeneration</pre></div></td></tr><tr><td>ModelName</td><td><div class=\"dni-plaintext\"><pre>gpt-4o</pre></div></td></tr><tr><td>TokenizerTokensIn</td><td><div class=\"dni-plaintext\"><pre>1725</pre></div></td></tr><tr><td>TokenizerTokensOut</td><td><div class=\"dni-plaintext\"><pre>302</pre></div></td></tr><tr><td>ServiceTokensIn</td><td><div class=\"dni-plaintext\"><pre>1716</pre></div></td></tr><tr><td>ServiceTokensOut</td><td><div class=\"dni-plaintext\"><pre>300</pre></div></td></tr><tr><td>ServiceReasoningTokens</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>RelevantSources</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_overview/7eada697c0ce4a45a905ee4a796cc674</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_overview</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>7eada697c0ce4a45a905ee4a796cc674</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>application/pdf</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>KM_Overview.pdf</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>/download?index=kernel-memory-index&amp;documentId=km_overview&amp;filename=KM_Overview.pdf</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>licenselicense MITMIT DiscordDiscord 404 online404 online\n",
       "Kernel Memory (KM) is a multi-modal AI Service specialized in the efficient indexing of datasets\n",
       "through custom continuous data hybrid pipelines, with support for Retrieval Augmented Generation (\n",
       "RAG), synthetic memory, prompt engineering, and custom semantic memory processing.\n",
       "KM is available as a Web Service, as a Docker container, a Plugin for ChatGPT/Copilot/Semantic\n",
       "Kernel, and as a .NET library for embedded applications.\n",
       "Utilizing advanced embeddings and LLMs, the system enables Natural Language querying for obtaining\n",
       "answers from the indexed data, complete with citations and links to the original sources.\n",
       "Designed for seamless integration as a Plugin with Semantic Kernel, Microsoft Copilot and ChatGPT,\n",
       "Kernel Memory enhances data-driven features in applications built for most popular AI platforms.\n",
       "Kernel Memory works and scales at best when running as an asynchronous Web Service, allowing to\n",
       "ingest thousands of documents and information without blocking your app.\n",
       "However, Kernel Memory can also run in serverless mode, embedding MemoryServerless class instance in\n",
       ".NET backend/console/desktop apps in synchronous mode. This approach works as well as in ASP.NET\n",
       "Web APIs and Azure Functions. Each request is processed immediately, although calling clients are\n",
       "responsible for handling transient errors.\n",
       "Depending on your scenarios, you might want to run all the code locally inside your process, or\n",
       "remotely through an asynchronous and scalable service.\n",
       "If you’re importing small files, and need only C# and can block the process during the import, local-in-\n",
       "process execution can be fine, using the MemoryServerless seen above.\n",
       "However, if you are in one of these scenarios:\n",
       "I’d just like a web service to import data and send queries to answer\n",
       "My app is written in TypeScript, Java, Rust, or some other language\n",
       "I’m importing big documents that can require minutes to process, and I don’t want to block the\n",
       "user interface\n",
       "I need memory import to run independently, supporting failures and retry logic\n",
       "I want to define custom pipelines mixing multiple languages like Python, TypeScript, etc\n",
       "then you can deploy Kernel Memory as a backend service, plugging in the default handlers, or your\n",
       "custom Python/TypeScript/Java/etc. handlers, and leveraging the asynchronous non-blocking memory\n",
       "encoding process, sending documents and asking questions using the MemoryWebClient.\n",
       "Here you can find a complete set of instruction about how to run the Kernel Memory service.\n",
       "Kernel Memory (KM) is a service built on the feedback received and lessons learned from developing\n",
       "Semantic Kernel (SK) and Semantic Memory (SM). It provides several features that would otherwise have\n",
       "to be developed manually, such as storing files, extracting text from files, providing a framework to\n",
       "secure users’ data, etc. The KM codebase is entirely in .NET, which eliminates the need to write and\n",
       "maintain features in multiple languages. As a service, KM can be used from any language, tool, or\n",
       "platform, e.g. browser extensions and ChatGPT assistants.\n",
       "Semantic Memory (SM) is a library for C#, Python, and Java that wraps direct calls to databases and\n",
       "supports vector search. It was developed as part of the Semantic Kernel (SK) project and serves as the\n",
       "first public iteration of long-term memory. The core library is maintained in three languages, while the\n",
       "list of supported storage engines (known as “connectors”) varies across languages.\n",
       "Here’s comparison table:\n",
       "Feature Kernel Memory Semantic Memory\n",
       "Data formats Web pages, PDF, Images, Word, PowerPoint,\n",
       "Excel, Markdown, Text, JSON, HTML Text only\n",
       "Search Cosine similarity, Hybrid search with filters\n",
       "(AND/OR conditions) Cosine similarity\n",
       "Language support\n",
       "Any language, command line tools, browser\n",
       "extensions, low-code/no-code apps,\n",
       "chatbots, assistants, etc.\n",
       "C#, Python, Java\n",
       "Storage engines\n",
       "Azure AI Search, Elasticsearch, MongoDB\n",
       "Atlas, Postgres+pgvector, Qdrant, Redis, SQL\n",
       "Server, In memory KNN, On disk KNN.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.8773293</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:50:40Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_overview ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ application/pdf ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 7eada697c0ce4a45a905ee4a796cc674 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 0e2d6cae4aff455a8a9b9f7dbec3459a ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ overview ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>, Text, JSON, HTML Text only\n",
       "Search Cosine similarity, Hybrid search with filters\n",
       "(AND/OR conditions) Cosine similarity\n",
       "Language support\n",
       "Any language, command line tools, browser\n",
       "extensions, low-code/no-code apps,\n",
       "chatbots, assistants, etc.\n",
       "C#, Python, Java\n",
       "Storage engines\n",
       "Azure AI Search, Elasticsearch, MongoDB\n",
       "Atlas, Postgres+pgvector, Qdrant, Redis, SQL\n",
       "Server, In memory KNN, On disk KNN.\n",
       "Azure AI Search, Chroma, DuckDB,\n",
       "Kusto, Milvus, MongoDB, Pinecone,\n",
       "Postgres, Qdrant, Redis, SQLite,\n",
       "Weaviate\n",
       "File storage Disk, Azure Blobs, AWS S3, MongoDB Atlas,\n",
       "In memory (volatile) -\n",
       "RAG Yes, with sources lookup -\n",
       "Summarization Yes -\n",
       "OCR Yes via Azure Document Intelligence -\n",
       "Security Filters Yes -\n",
       "Large document\n",
       "ingestion\n",
       "Yes, including async processing using queues\n",
       "(Azure Queues, RabbitMQ, File based or In\n",
       "memory queues)\n",
       "-\n",
       "Document storage Yes -\n",
       "Custom storage\n",
       "schema some DBs -\n",
       "Vector DBs with\n",
       "internal embedding Yes -\n",
       "Concurrent write to\n",
       "multiple vector DBs Yes -\n",
       "LLMs\n",
       "Azure OpenAI, OpenAI, Anthropic, Ollama,\n",
       "LLamaSharp, LM Studio, Semantic Kernel\n",
       "connectors\n",
       "Azure OpenAI, OpenAI, Gemini,\n",
       "Hugging Face, ONNX, custom ones,\n",
       "etc.\n",
       "LLMs with dedicated\n",
       "tokenization Yes No\n",
       "Cloud deployment Yes -\n",
       "Web service with\n",
       "OpenAPI Yes -\n",
       "Quickstart: test KM in few minutes\n",
       "Memory service, web clients and plugins\n",
       "Memory API, memory ingestion and information retrieval\n",
       "KM Extensions: vector DBs, AI models, Data formats, Orchestration, Document storage\n",
       "Embedding serverless memory in .NET apps\n",
       "Security, service and users\n",
       "How-to guides, customizing KM and examples\n",
       "Concepts, KM glossary\n",
       "KM packages\n",
       "Kernel Memory\n",
       "Synchronous Memory API (aka “serverless”)\n",
       "Memory as a Service - Asynchronous API\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "Kernel Memory (KM) and SK Semantic Memory\n",
       "(SM)\n",
       "Topics\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.7996152</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>1</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:50:40Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_overview ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ application/pdf ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 7eada697c0ce4a45a905ee4a796cc674 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 61aadab7bffc4428bcbd709334288a28 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 1 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ overview ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_concept_index/51fc0f664e8e475cae64f9ca3d3c8966</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_concept_index</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>51fc0f664e8e475cae64f9ca3d3c8966</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>text/plain</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>content.txt</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>/download?index=kernel-memory-index&amp;documentId=km_concept_index&amp;filename=content.txt</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>Kernel Memory leverages vector storage to save the meaning of the documents ingested into the service, solutions like Azure AI Search, Qdrant, Elastic Search, Redis etc.\n",
       "\n",
       "Typically, storage solutions offer a maximum capacity for each collection, and often one needs to clearly separate data over distinct collections for security, privacy or other important reasons.\n",
       "\n",
       "In KM terms, these collection are called “indexes”.\n",
       "\n",
       "When storing information, when searching, and when asking questions, KM is always working within the boundaries of one index. Data in one index never leaks into other indexes.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.8017822</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:51:07Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_concept_index ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ text/plain ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 51fc0f664e8e475cae64f9ca3d3c8966 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 135bb5bd97234a31a3d5664350fedda7 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ concept ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr><tr><td>2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_concept_document/fdebc7160637495e95760520aaae284f</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_concept_document</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>fdebc7160637495e95760520aaae284f</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>text/x-uri</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>content.url</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>https://raw.githubusercontent.com/microsoft/kernel-memory/refs/heads/main/docs/concepts/document.md</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>---\n",
       "nav_order: 2\n",
       "parent: Concepts\n",
       "title: Document\n",
       "permalink: /concepts/document\n",
       "layout: default\n",
       "---\n",
       "# Document\n",
       "\n",
       "When uploading information into KM, the data is always packaged as a document.\n",
       "\n",
       "A document can consist of a URL to a web page to download, one or more files,\n",
       "including images, or just a string to be stored.\n",
       "\n",
       "Regardless of source and format, a client stores documents.\n",
       "\n",
       "When searching and asking questions, you can specify the scope of the search,\n",
       "e.g. whether to consider an entire index, just a document, or maybe just one of\n",
       "the files in a document.\n",
       "\n",
       "One important aspect to highlight is that documents have one unique ID, that you\n",
       "can either assign or is automatically assigned by the system. This ID allows to\n",
       "update the same files, without the risk of duplicating memories, and to delete\n",
       "the information at any moment.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.7300163</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:51:35Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_concept_document ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ text/x-uri ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ fdebc7160637495e95760520aaae284f ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ cdabfa7447874b189f6a50d578697043 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ concept ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details><style>\r\n",
       ".dni-code-hint {\r\n",
       "    font-style: italic;\r\n",
       "    overflow: hidden;\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview {\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview td {\r\n",
       "    vertical-align: top;\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "details.dni-treeview {\r\n",
       "    padding-left: 1em;\r\n",
       "}\r\n",
       "table td {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "table tr { \r\n",
       "    vertical-align: top; \r\n",
       "    margin: 0em 0px;\r\n",
       "}\r\n",
       "table tr td pre \r\n",
       "{ \r\n",
       "    vertical-align: top !important; \r\n",
       "    margin: 0em 0px !important;\r\n",
       "} \r\n",
       "table th {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "</style>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "// 通过指定索引进行问答\n",
    "var answer = await memory.AskAsync(question: \"What is Kernel Memory?\", index: \"kernel-memory-index\");\n",
    "answer.Display();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<details open=\"open\" class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.SearchResult</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Query</td><td><div class=\"dni-plaintext\"><pre>What is Kernel Memory?</pre></div></td></tr><tr><td>NoResult</td><td><div class=\"dni-plaintext\"><pre>False</pre></div></td></tr><tr><td>Results</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>default/091fc40c7db844c9b27e183e42412f51202504031024146472807/5b805952b1cb4ab680d0e24622e37d3a</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>default</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>091fc40c7db844c9b27e183e42412f51202504031024146472807</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>5b805952b1cb4ab680d0e24622e37d3a</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>application/pdf</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>KM_Overview.pdf</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>/download?index=default&amp;documentId=091fc40c7db844c9b27e183e42412f51202504031024146472807&amp;filename=KM_Overview.pdf</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>licenselicense MITMIT DiscordDiscord 404 online404 online\n",
       "Kernel Memory (KM) is a multi-modal AI Service specialized in the efficient indexing of datasets\n",
       "through custom continuous data hybrid pipelines, with support for Retrieval Augmented Generation (\n",
       "RAG), synthetic memory, prompt engineering, and custom semantic memory processing.\n",
       "KM is available as a Web Service, as a Docker container, a Plugin for ChatGPT/Copilot/Semantic\n",
       "Kernel, and as a .NET library for embedded applications.\n",
       "Utilizing advanced embeddings and LLMs, the system enables Natural Language querying for obtaining\n",
       "answers from the indexed data, complete with citations and links to the original sources.\n",
       "Designed for seamless integration as a Plugin with Semantic Kernel, Microsoft Copilot and ChatGPT,\n",
       "Kernel Memory enhances data-driven features in applications built for most popular AI platforms.\n",
       "Kernel Memory works and scales at best when running as an asynchronous Web Service, allowing to\n",
       "ingest thousands of documents and information without blocking your app.\n",
       "However, Kernel Memory can also run in serverless mode, embedding MemoryServerless class instance in\n",
       ".NET backend/console/desktop apps in synchronous mode. This approach works as well as in ASP.NET\n",
       "Web APIs and Azure Functions. Each request is processed immediately, although calling clients are\n",
       "responsible for handling transient errors.\n",
       "Depending on your scenarios, you might want to run all the code locally inside your process, or\n",
       "remotely through an asynchronous and scalable service.\n",
       "If you’re importing small files, and need only C# and can block the process during the import, local-in-\n",
       "process execution can be fine, using the MemoryServerless seen above.\n",
       "However, if you are in one of these scenarios:\n",
       "I’d just like a web service to import data and send queries to answer\n",
       "My app is written in TypeScript, Java, Rust, or some other language\n",
       "I’m importing big documents that can require minutes to process, and I don’t want to block the\n",
       "user interface\n",
       "I need memory import to run independently, supporting failures and retry logic\n",
       "I want to define custom pipelines mixing multiple languages like Python, TypeScript, etc\n",
       "then you can deploy Kernel Memory as a backend service, plugging in the default handlers, or your\n",
       "custom Python/TypeScript/Java/etc. handlers, and leveraging the asynchronous non-blocking memory\n",
       "encoding process, sending documents and asking questions using the MemoryWebClient.\n",
       "Here you can find a complete set of instruction about how to run the Kernel Memory service.\n",
       "Kernel Memory (KM) is a service built on the feedback received and lessons learned from developing\n",
       "Semantic Kernel (SK) and Semantic Memory (SM). It provides several features that would otherwise have\n",
       "to be developed manually, such as storing files, extracting text from files, providing a framework to\n",
       "secure users’ data, etc. The KM codebase is entirely in .NET, which eliminates the need to write and\n",
       "maintain features in multiple languages. As a service, KM can be used from any language, tool, or\n",
       "platform, e.g. browser extensions and ChatGPT assistants.\n",
       "Semantic Memory (SM) is a library for C#, Python, and Java that wraps direct calls to databases and\n",
       "supports vector search. It was developed as part of the Semantic Kernel (SK) project and serves as the\n",
       "first public iteration of long-term memory. The core library is maintained in three languages, while the\n",
       "list of supported storage engines (known as “connectors”) varies across languages.\n",
       "Here’s comparison table:\n",
       "Feature Kernel Memory Semantic Memory\n",
       "Data formats Web pages, PDF, Images, Word, PowerPoint,\n",
       "Excel, Markdown, Text, JSON, HTML Text only\n",
       "Search Cosine similarity, Hybrid search with filters\n",
       "(AND/OR conditions) Cosine similarity\n",
       "Language support\n",
       "Any language, command line tools, browser\n",
       "extensions, low-code/no-code apps,\n",
       "chatbots, assistants, etc.\n",
       "C#, Python, Java\n",
       "Storage engines\n",
       "Azure AI Search, Elasticsearch, MongoDB\n",
       "Atlas, Postgres+pgvector, Qdrant, Redis, SQL\n",
       "Server, In memory KNN, On disk KNN.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.8773293</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:24:16Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ 091fc40c7db844c9b27e183e42412f51202504031024146472807 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ application/pdf ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 5b805952b1cb4ab680d0e24622e37d3a ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 162155cbe3b7422aa74fa47cd435ab93 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>, Text, JSON, HTML Text only\n",
       "Search Cosine similarity, Hybrid search with filters\n",
       "(AND/OR conditions) Cosine similarity\n",
       "Language support\n",
       "Any language, command line tools, browser\n",
       "extensions, low-code/no-code apps,\n",
       "chatbots, assistants, etc.\n",
       "C#, Python, Java\n",
       "Storage engines\n",
       "Azure AI Search, Elasticsearch, MongoDB\n",
       "Atlas, Postgres+pgvector, Qdrant, Redis, SQL\n",
       "Server, In memory KNN, On disk KNN.\n",
       "Azure AI Search, Chroma, DuckDB,\n",
       "Kusto, Milvus, MongoDB, Pinecone,\n",
       "Postgres, Qdrant, Redis, SQLite,\n",
       "Weaviate\n",
       "File storage Disk, Azure Blobs, AWS S3, MongoDB Atlas,\n",
       "In memory (volatile) -\n",
       "RAG Yes, with sources lookup -\n",
       "Summarization Yes -\n",
       "OCR Yes via Azure Document Intelligence -\n",
       "Security Filters Yes -\n",
       "Large document\n",
       "ingestion\n",
       "Yes, including async processing using queues\n",
       "(Azure Queues, RabbitMQ, File based or In\n",
       "memory queues)\n",
       "-\n",
       "Document storage Yes -\n",
       "Custom storage\n",
       "schema some DBs -\n",
       "Vector DBs with\n",
       "internal embedding Yes -\n",
       "Concurrent write to\n",
       "multiple vector DBs Yes -\n",
       "LLMs\n",
       "Azure OpenAI, OpenAI, Anthropic, Ollama,\n",
       "LLamaSharp, LM Studio, Semantic Kernel\n",
       "connectors\n",
       "Azure OpenAI, OpenAI, Gemini,\n",
       "Hugging Face, ONNX, custom ones,\n",
       "etc.\n",
       "LLMs with dedicated\n",
       "tokenization Yes No\n",
       "Cloud deployment Yes -\n",
       "Web service with\n",
       "OpenAPI Yes -\n",
       "Quickstart: test KM in few minutes\n",
       "Memory service, web clients and plugins\n",
       "Memory API, memory ingestion and information retrieval\n",
       "KM Extensions: vector DBs, AI models, Data formats, Orchestration, Document storage\n",
       "Embedding serverless memory in .NET apps\n",
       "Security, service and users\n",
       "How-to guides, customizing KM and examples\n",
       "Concepts, KM glossary\n",
       "KM packages\n",
       "Kernel Memory\n",
       "Synchronous Memory API (aka “serverless”)\n",
       "Memory as a Service - Asynchronous API\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "Kernel Memory (KM) and SK Semantic Memory\n",
       "(SM)\n",
       "Topics\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.7996152</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>1</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:24:16Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ 091fc40c7db844c9b27e183e42412f51202504031024146472807 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ application/pdf ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 5b805952b1cb4ab680d0e24622e37d3a ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ fae16e6c7b7f431e9a890bfe4aed6aac ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 1 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details><style>\r\n",
       ".dni-code-hint {\r\n",
       "    font-style: italic;\r\n",
       "    overflow: hidden;\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview {\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview td {\r\n",
       "    vertical-align: top;\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "details.dni-treeview {\r\n",
       "    padding-left: 1em;\r\n",
       "}\r\n",
       "table td {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "table tr { \r\n",
       "    vertical-align: top; \r\n",
       "    margin: 0em 0px;\r\n",
       "}\r\n",
       "table tr td pre \r\n",
       "{ \r\n",
       "    vertical-align: top !important; \r\n",
       "    margin: 0em 0px !important;\r\n",
       "} \r\n",
       "table th {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "</style>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "// 未指定索引时，将默认在`default`索引下搜索\n",
    "var searchResult = await memory.SearchAsync(query: \"What is Kernel Memory?\");\n",
    "\n",
    "searchResult.Display();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 按文档过滤"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 单文档过滤"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<details open=\"open\" class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Kernel Memory (KM) is a multi-modal AI service designed for efficient indexing of datasets through custom continuous data hybrid pipelines. It supports features such as Retrieval Augmented Generation (RAG), synthetic memory, prompt engineering, and custom semantic memory processing. KM is available ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>StreamState</td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td>Question</td><td><div class=\"dni-plaintext\"><pre>What is Kernel Memory?</pre></div></td></tr><tr><td>NoResult</td><td><div class=\"dni-plaintext\"><pre>False</pre></div></td></tr><tr><td>NoResultReason</td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td>Result</td><td><div class=\"dni-plaintext\"><pre>Kernel Memory (KM) is a multi-modal AI service designed for efficient indexing of datasets through custom continuous data hybrid pipelines. It supports features such as Retrieval Augmented Generation (RAG), synthetic memory, prompt engineering, and custom semantic memory processing. KM is available as a web service, a Docker container, a plugin for ChatGPT/Copilot/Semantic Kernel, and as a .NET library for embedded applications. It utilizes advanced embeddings and large language models (LLMs) to enable natural language querying for obtaining answers from indexed data, complete with citations and links to original sources.\n",
       "\n",
       "KM is designed for seamless integration as a plugin with Semantic Kernel, Microsoft Copilot, and ChatGPT, enhancing data-driven features in applications built for popular AI platforms. It works best as an asynchronous web service, allowing the ingestion of thousands of documents without blocking the application. However, it can also run in serverless mode, embedding a MemoryServerless class instance in .NET backend/console/desktop apps in synchronous mode. This approach is also applicable in ASP.NET Web APIs and Azure Functions.\n",
       "\n",
       "KM provides several features that would otherwise need to be developed manually, such as storing files, extracting text from files, and providing a framework to secure users&#39; data. The KM codebase is entirely in .NET, eliminating the need to write and maintain features in multiple languages. As a service, KM can be used from any language, tool, or platform, including browser extensions and ChatGPT assistants.\n",
       "\n",
       "KM supports various data</pre></div></td></tr><tr><td>TokenUsage</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.TokenUsage</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Timestamp</td><td><span>2025-04-03 02:54:54Z</span></td></tr><tr><td>ServiceType</td><td><div class=\"dni-plaintext\"><pre>Azure OpenAI</pre></div></td></tr><tr><td>ModelType</td><td><div class=\"dni-plaintext\"><pre>TextGeneration</pre></div></td></tr><tr><td>ModelName</td><td><div class=\"dni-plaintext\"><pre>gpt-4o</pre></div></td></tr><tr><td>TokenizerTokensIn</td><td><div class=\"dni-plaintext\"><pre>1384</pre></div></td></tr><tr><td>TokenizerTokensOut</td><td><div class=\"dni-plaintext\"><pre>302</pre></div></td></tr><tr><td>ServiceTokensIn</td><td><div class=\"dni-plaintext\"><pre>1376</pre></div></td></tr><tr><td>ServiceTokensOut</td><td><div class=\"dni-plaintext\"><pre>300</pre></div></td></tr><tr><td>ServiceReasoningTokens</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>RelevantSources</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_overview/7eada697c0ce4a45a905ee4a796cc674</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_overview</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>7eada697c0ce4a45a905ee4a796cc674</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>application/pdf</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>KM_Overview.pdf</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>/download?index=kernel-memory-index&amp;documentId=km_overview&amp;filename=KM_Overview.pdf</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>licenselicense MITMIT DiscordDiscord 404 online404 online\n",
       "Kernel Memory (KM) is a multi-modal AI Service specialized in the efficient indexing of datasets\n",
       "through custom continuous data hybrid pipelines, with support for Retrieval Augmented Generation (\n",
       "RAG), synthetic memory, prompt engineering, and custom semantic memory processing.\n",
       "KM is available as a Web Service, as a Docker container, a Plugin for ChatGPT/Copilot/Semantic\n",
       "Kernel, and as a .NET library for embedded applications.\n",
       "Utilizing advanced embeddings and LLMs, the system enables Natural Language querying for obtaining\n",
       "answers from the indexed data, complete with citations and links to the original sources.\n",
       "Designed for seamless integration as a Plugin with Semantic Kernel, Microsoft Copilot and ChatGPT,\n",
       "Kernel Memory enhances data-driven features in applications built for most popular AI platforms.\n",
       "Kernel Memory works and scales at best when running as an asynchronous Web Service, allowing to\n",
       "ingest thousands of documents and information without blocking your app.\n",
       "However, Kernel Memory can also run in serverless mode, embedding MemoryServerless class instance in\n",
       ".NET backend/console/desktop apps in synchronous mode. This approach works as well as in ASP.NET\n",
       "Web APIs and Azure Functions. Each request is processed immediately, although calling clients are\n",
       "responsible for handling transient errors.\n",
       "Depending on your scenarios, you might want to run all the code locally inside your process, or\n",
       "remotely through an asynchronous and scalable service.\n",
       "If you’re importing small files, and need only C# and can block the process during the import, local-in-\n",
       "process execution can be fine, using the MemoryServerless seen above.\n",
       "However, if you are in one of these scenarios:\n",
       "I’d just like a web service to import data and send queries to answer\n",
       "My app is written in TypeScript, Java, Rust, or some other language\n",
       "I’m importing big documents that can require minutes to process, and I don’t want to block the\n",
       "user interface\n",
       "I need memory import to run independently, supporting failures and retry logic\n",
       "I want to define custom pipelines mixing multiple languages like Python, TypeScript, etc\n",
       "then you can deploy Kernel Memory as a backend service, plugging in the default handlers, or your\n",
       "custom Python/TypeScript/Java/etc. handlers, and leveraging the asynchronous non-blocking memory\n",
       "encoding process, sending documents and asking questions using the MemoryWebClient.\n",
       "Here you can find a complete set of instruction about how to run the Kernel Memory service.\n",
       "Kernel Memory (KM) is a service built on the feedback received and lessons learned from developing\n",
       "Semantic Kernel (SK) and Semantic Memory (SM). It provides several features that would otherwise have\n",
       "to be developed manually, such as storing files, extracting text from files, providing a framework to\n",
       "secure users’ data, etc. The KM codebase is entirely in .NET, which eliminates the need to write and\n",
       "maintain features in multiple languages. As a service, KM can be used from any language, tool, or\n",
       "platform, e.g. browser extensions and ChatGPT assistants.\n",
       "Semantic Memory (SM) is a library for C#, Python, and Java that wraps direct calls to databases and\n",
       "supports vector search. It was developed as part of the Semantic Kernel (SK) project and serves as the\n",
       "first public iteration of long-term memory. The core library is maintained in three languages, while the\n",
       "list of supported storage engines (known as “connectors”) varies across languages.\n",
       "Here’s comparison table:\n",
       "Feature Kernel Memory Semantic Memory\n",
       "Data formats Web pages, PDF, Images, Word, PowerPoint,\n",
       "Excel, Markdown, Text, JSON, HTML Text only\n",
       "Search Cosine similarity, Hybrid search with filters\n",
       "(AND/OR conditions) Cosine similarity\n",
       "Language support\n",
       "Any language, command line tools, browser\n",
       "extensions, low-code/no-code apps,\n",
       "chatbots, assistants, etc.\n",
       "C#, Python, Java\n",
       "Storage engines\n",
       "Azure AI Search, Elasticsearch, MongoDB\n",
       "Atlas, Postgres+pgvector, Qdrant, Redis, SQL\n",
       "Server, In memory KNN, On disk KNN.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.8773293</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:50:40Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_overview ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ application/pdf ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 7eada697c0ce4a45a905ee4a796cc674 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 0e2d6cae4aff455a8a9b9f7dbec3459a ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ overview ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>, Text, JSON, HTML Text only\n",
       "Search Cosine similarity, Hybrid search with filters\n",
       "(AND/OR conditions) Cosine similarity\n",
       "Language support\n",
       "Any language, command line tools, browser\n",
       "extensions, low-code/no-code apps,\n",
       "chatbots, assistants, etc.\n",
       "C#, Python, Java\n",
       "Storage engines\n",
       "Azure AI Search, Elasticsearch, MongoDB\n",
       "Atlas, Postgres+pgvector, Qdrant, Redis, SQL\n",
       "Server, In memory KNN, On disk KNN.\n",
       "Azure AI Search, Chroma, DuckDB,\n",
       "Kusto, Milvus, MongoDB, Pinecone,\n",
       "Postgres, Qdrant, Redis, SQLite,\n",
       "Weaviate\n",
       "File storage Disk, Azure Blobs, AWS S3, MongoDB Atlas,\n",
       "In memory (volatile) -\n",
       "RAG Yes, with sources lookup -\n",
       "Summarization Yes -\n",
       "OCR Yes via Azure Document Intelligence -\n",
       "Security Filters Yes -\n",
       "Large document\n",
       "ingestion\n",
       "Yes, including async processing using queues\n",
       "(Azure Queues, RabbitMQ, File based or In\n",
       "memory queues)\n",
       "-\n",
       "Document storage Yes -\n",
       "Custom storage\n",
       "schema some DBs -\n",
       "Vector DBs with\n",
       "internal embedding Yes -\n",
       "Concurrent write to\n",
       "multiple vector DBs Yes -\n",
       "LLMs\n",
       "Azure OpenAI, OpenAI, Anthropic, Ollama,\n",
       "LLamaSharp, LM Studio, Semantic Kernel\n",
       "connectors\n",
       "Azure OpenAI, OpenAI, Gemini,\n",
       "Hugging Face, ONNX, custom ones,\n",
       "etc.\n",
       "LLMs with dedicated\n",
       "tokenization Yes No\n",
       "Cloud deployment Yes -\n",
       "Web service with\n",
       "OpenAPI Yes -\n",
       "Quickstart: test KM in few minutes\n",
       "Memory service, web clients and plugins\n",
       "Memory API, memory ingestion and information retrieval\n",
       "KM Extensions: vector DBs, AI models, Data formats, Orchestration, Document storage\n",
       "Embedding serverless memory in .NET apps\n",
       "Security, service and users\n",
       "How-to guides, customizing KM and examples\n",
       "Concepts, KM glossary\n",
       "KM packages\n",
       "Kernel Memory\n",
       "Synchronous Memory API (aka “serverless”)\n",
       "Memory as a Service - Asynchronous API\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "Kernel Memory (KM) and SK Semantic Memory\n",
       "(SM)\n",
       "Topics\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.7996152</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>1</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:50:40Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_overview ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ application/pdf ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 7eada697c0ce4a45a905ee4a796cc674 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 61aadab7bffc4428bcbd709334288a28 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 1 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ overview ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details><style>\r\n",
       ".dni-code-hint {\r\n",
       "    font-style: italic;\r\n",
       "    overflow: hidden;\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview {\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview td {\r\n",
       "    vertical-align: top;\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "details.dni-treeview {\r\n",
       "    padding-left: 1em;\r\n",
       "}\r\n",
       "table td {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "table tr { \r\n",
       "    vertical-align: top; \r\n",
       "    margin: 0em 0px;\r\n",
       "}\r\n",
       "table tr td pre \r\n",
       "{ \r\n",
       "    vertical-align: top !important; \r\n",
       "    margin: 0em 0px !important;\r\n",
       "} \r\n",
       "table th {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "</style>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "var docFilter = MemoryFilters.ByDocument(\"km_overview\");\n",
    "\n",
    "// 记忆问答\n",
    "var answer = await memory.AskAsync(\n",
    "    question: \"What is Kernel Memory?\", \n",
    "    index: \"kernel-memory-index\", \n",
    "    filter: docFilter);\n",
    "\n",
    "answer.Display();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<details open=\"open\" class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.SearchResult</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Query</td><td><div class=\"dni-plaintext\"><pre>What is Kernel Memory?</pre></div></td></tr><tr><td>NoResult</td><td><div class=\"dni-plaintext\"><pre>False</pre></div></td></tr><tr><td>Results</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_overview/7eada697c0ce4a45a905ee4a796cc674</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_overview</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>7eada697c0ce4a45a905ee4a796cc674</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>application/pdf</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>KM_Overview.pdf</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>/download?index=kernel-memory-index&amp;documentId=km_overview&amp;filename=KM_Overview.pdf</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>licenselicense MITMIT DiscordDiscord 404 online404 online\n",
       "Kernel Memory (KM) is a multi-modal AI Service specialized in the efficient indexing of datasets\n",
       "through custom continuous data hybrid pipelines, with support for Retrieval Augmented Generation (\n",
       "RAG), synthetic memory, prompt engineering, and custom semantic memory processing.\n",
       "KM is available as a Web Service, as a Docker container, a Plugin for ChatGPT/Copilot/Semantic\n",
       "Kernel, and as a .NET library for embedded applications.\n",
       "Utilizing advanced embeddings and LLMs, the system enables Natural Language querying for obtaining\n",
       "answers from the indexed data, complete with citations and links to the original sources.\n",
       "Designed for seamless integration as a Plugin with Semantic Kernel, Microsoft Copilot and ChatGPT,\n",
       "Kernel Memory enhances data-driven features in applications built for most popular AI platforms.\n",
       "Kernel Memory works and scales at best when running as an asynchronous Web Service, allowing to\n",
       "ingest thousands of documents and information without blocking your app.\n",
       "However, Kernel Memory can also run in serverless mode, embedding MemoryServerless class instance in\n",
       ".NET backend/console/desktop apps in synchronous mode. This approach works as well as in ASP.NET\n",
       "Web APIs and Azure Functions. Each request is processed immediately, although calling clients are\n",
       "responsible for handling transient errors.\n",
       "Depending on your scenarios, you might want to run all the code locally inside your process, or\n",
       "remotely through an asynchronous and scalable service.\n",
       "If you’re importing small files, and need only C# and can block the process during the import, local-in-\n",
       "process execution can be fine, using the MemoryServerless seen above.\n",
       "However, if you are in one of these scenarios:\n",
       "I’d just like a web service to import data and send queries to answer\n",
       "My app is written in TypeScript, Java, Rust, or some other language\n",
       "I’m importing big documents that can require minutes to process, and I don’t want to block the\n",
       "user interface\n",
       "I need memory import to run independently, supporting failures and retry logic\n",
       "I want to define custom pipelines mixing multiple languages like Python, TypeScript, etc\n",
       "then you can deploy Kernel Memory as a backend service, plugging in the default handlers, or your\n",
       "custom Python/TypeScript/Java/etc. handlers, and leveraging the asynchronous non-blocking memory\n",
       "encoding process, sending documents and asking questions using the MemoryWebClient.\n",
       "Here you can find a complete set of instruction about how to run the Kernel Memory service.\n",
       "Kernel Memory (KM) is a service built on the feedback received and lessons learned from developing\n",
       "Semantic Kernel (SK) and Semantic Memory (SM). It provides several features that would otherwise have\n",
       "to be developed manually, such as storing files, extracting text from files, providing a framework to\n",
       "secure users’ data, etc. The KM codebase is entirely in .NET, which eliminates the need to write and\n",
       "maintain features in multiple languages. As a service, KM can be used from any language, tool, or\n",
       "platform, e.g. browser extensions and ChatGPT assistants.\n",
       "Semantic Memory (SM) is a library for C#, Python, and Java that wraps direct calls to databases and\n",
       "supports vector search. It was developed as part of the Semantic Kernel (SK) project and serves as the\n",
       "first public iteration of long-term memory. The core library is maintained in three languages, while the\n",
       "list of supported storage engines (known as “connectors”) varies across languages.\n",
       "Here’s comparison table:\n",
       "Feature Kernel Memory Semantic Memory\n",
       "Data formats Web pages, PDF, Images, Word, PowerPoint,\n",
       "Excel, Markdown, Text, JSON, HTML Text only\n",
       "Search Cosine similarity, Hybrid search with filters\n",
       "(AND/OR conditions) Cosine similarity\n",
       "Language support\n",
       "Any language, command line tools, browser\n",
       "extensions, low-code/no-code apps,\n",
       "chatbots, assistants, etc.\n",
       "C#, Python, Java\n",
       "Storage engines\n",
       "Azure AI Search, Elasticsearch, MongoDB\n",
       "Atlas, Postgres+pgvector, Qdrant, Redis, SQL\n",
       "Server, In memory KNN, On disk KNN.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.8773293</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:50:40Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_overview ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ application/pdf ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 7eada697c0ce4a45a905ee4a796cc674 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 0e2d6cae4aff455a8a9b9f7dbec3459a ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ overview ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>, Text, JSON, HTML Text only\n",
       "Search Cosine similarity, Hybrid search with filters\n",
       "(AND/OR conditions) Cosine similarity\n",
       "Language support\n",
       "Any language, command line tools, browser\n",
       "extensions, low-code/no-code apps,\n",
       "chatbots, assistants, etc.\n",
       "C#, Python, Java\n",
       "Storage engines\n",
       "Azure AI Search, Elasticsearch, MongoDB\n",
       "Atlas, Postgres+pgvector, Qdrant, Redis, SQL\n",
       "Server, In memory KNN, On disk KNN.\n",
       "Azure AI Search, Chroma, DuckDB,\n",
       "Kusto, Milvus, MongoDB, Pinecone,\n",
       "Postgres, Qdrant, Redis, SQLite,\n",
       "Weaviate\n",
       "File storage Disk, Azure Blobs, AWS S3, MongoDB Atlas,\n",
       "In memory (volatile) -\n",
       "RAG Yes, with sources lookup -\n",
       "Summarization Yes -\n",
       "OCR Yes via Azure Document Intelligence -\n",
       "Security Filters Yes -\n",
       "Large document\n",
       "ingestion\n",
       "Yes, including async processing using queues\n",
       "(Azure Queues, RabbitMQ, File based or In\n",
       "memory queues)\n",
       "-\n",
       "Document storage Yes -\n",
       "Custom storage\n",
       "schema some DBs -\n",
       "Vector DBs with\n",
       "internal embedding Yes -\n",
       "Concurrent write to\n",
       "multiple vector DBs Yes -\n",
       "LLMs\n",
       "Azure OpenAI, OpenAI, Anthropic, Ollama,\n",
       "LLamaSharp, LM Studio, Semantic Kernel\n",
       "connectors\n",
       "Azure OpenAI, OpenAI, Gemini,\n",
       "Hugging Face, ONNX, custom ones,\n",
       "etc.\n",
       "LLMs with dedicated\n",
       "tokenization Yes No\n",
       "Cloud deployment Yes -\n",
       "Web service with\n",
       "OpenAPI Yes -\n",
       "Quickstart: test KM in few minutes\n",
       "Memory service, web clients and plugins\n",
       "Memory API, memory ingestion and information retrieval\n",
       "KM Extensions: vector DBs, AI models, Data formats, Orchestration, Document storage\n",
       "Embedding serverless memory in .NET apps\n",
       "Security, service and users\n",
       "How-to guides, customizing KM and examples\n",
       "Concepts, KM glossary\n",
       "KM packages\n",
       "Kernel Memory\n",
       "Synchronous Memory API (aka “serverless”)\n",
       "Memory as a Service - Asynchronous API\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "Kernel Memory (KM) and SK Semantic Memory\n",
       "(SM)\n",
       "Topics\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.7996152</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>1</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:50:40Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_overview ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ application/pdf ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 7eada697c0ce4a45a905ee4a796cc674 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 61aadab7bffc4428bcbd709334288a28 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 1 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ overview ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details><style>\r\n",
       ".dni-code-hint {\r\n",
       "    font-style: italic;\r\n",
       "    overflow: hidden;\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview {\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview td {\r\n",
       "    vertical-align: top;\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "details.dni-treeview {\r\n",
       "    padding-left: 1em;\r\n",
       "}\r\n",
       "table td {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "table tr { \r\n",
       "    vertical-align: top; \r\n",
       "    margin: 0em 0px;\r\n",
       "}\r\n",
       "table tr td pre \r\n",
       "{ \r\n",
       "    vertical-align: top !important; \r\n",
       "    margin: 0em 0px !important;\r\n",
       "} \r\n",
       "table th {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "</style>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "// 记忆检索\n",
    "var searchResult = await memory.SearchAsync(\n",
    "    query: \"What is Kernel Memory?\", \n",
    "    index: \"kernel-memory-index\",\n",
    "    filter: docFilter);\n",
    "\n",
    "searchResult.Display();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 多文档过滤"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<details open=\"open\" class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Kernel Memory (KM) is a multi-modal AI service designed for efficient indexing of datasets through custom continuous data hybrid pipelines. It supports features such as Retrieval Augmented Generation (RAG), synthetic memory, prompt engineering, and custom semantic memory processing. KM is available ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>StreamState</td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td>Question</td><td><div class=\"dni-plaintext\"><pre>What is Kernel Memory?</pre></div></td></tr><tr><td>NoResult</td><td><div class=\"dni-plaintext\"><pre>False</pre></div></td></tr><tr><td>NoResultReason</td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td>Result</td><td><div class=\"dni-plaintext\"><pre>Kernel Memory (KM) is a multi-modal AI service designed for efficient indexing of datasets through custom continuous data hybrid pipelines. It supports features such as Retrieval Augmented Generation (RAG), synthetic memory, prompt engineering, and custom semantic memory processing. KM is available as a web service, a Docker container, a plugin for ChatGPT/Copilot/Semantic Kernel, and as a .NET library for embedded applications.\n",
       "\n",
       "KM utilizes advanced embeddings and large language models (LLMs) to enable natural language querying for obtaining answers from indexed data, complete with citations and links to the original sources. It is designed for seamless integration as a plugin with Semantic Kernel, Microsoft Copilot, and ChatGPT, enhancing data-driven features in applications built for popular AI platforms.\n",
       "\n",
       "KM can operate as an asynchronous web service, allowing the ingestion of thousands of documents without blocking applications. It can also run in serverless mode, embedding a MemoryServerless class instance in .NET backend/console/desktop apps in synchronous mode. This approach is also applicable in ASP.NET Web APIs and Azure Functions.\n",
       "\n",
       "KM is built on the feedback and lessons learned from developing Semantic Kernel (SK) and Semantic Memory (SM). It provides features such as storing files, extracting text from files, and securing users&#39; data. The KM codebase is entirely in .NET, making it accessible from any language, tool, or platform, including browser extensions and ChatGPT assistants.\n",
       "\n",
       "KM leverages vector storage solutions like Azure AI Search, Qdrant,</pre></div></td></tr><tr><td>TokenUsage</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.TokenUsage</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Timestamp</td><td><span>2025-04-03 02:56:12Z</span></td></tr><tr><td>ServiceType</td><td><div class=\"dni-plaintext\"><pre>Azure OpenAI</pre></div></td></tr><tr><td>ModelType</td><td><div class=\"dni-plaintext\"><pre>TextGeneration</pre></div></td></tr><tr><td>ModelName</td><td><div class=\"dni-plaintext\"><pre>gpt-4o</pre></div></td></tr><tr><td>TokenizerTokensIn</td><td><div class=\"dni-plaintext\"><pre>1511</pre></div></td></tr><tr><td>TokenizerTokensOut</td><td><div class=\"dni-plaintext\"><pre>302</pre></div></td></tr><tr><td>ServiceTokensIn</td><td><div class=\"dni-plaintext\"><pre>1502</pre></div></td></tr><tr><td>ServiceTokensOut</td><td><div class=\"dni-plaintext\"><pre>300</pre></div></td></tr><tr><td>ServiceReasoningTokens</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>RelevantSources</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_overview/7eada697c0ce4a45a905ee4a796cc674</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_overview</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>7eada697c0ce4a45a905ee4a796cc674</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>application/pdf</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>KM_Overview.pdf</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>/download?index=kernel-memory-index&amp;documentId=km_overview&amp;filename=KM_Overview.pdf</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>licenselicense MITMIT DiscordDiscord 404 online404 online\n",
       "Kernel Memory (KM) is a multi-modal AI Service specialized in the efficient indexing of datasets\n",
       "through custom continuous data hybrid pipelines, with support for Retrieval Augmented Generation (\n",
       "RAG), synthetic memory, prompt engineering, and custom semantic memory processing.\n",
       "KM is available as a Web Service, as a Docker container, a Plugin for ChatGPT/Copilot/Semantic\n",
       "Kernel, and as a .NET library for embedded applications.\n",
       "Utilizing advanced embeddings and LLMs, the system enables Natural Language querying for obtaining\n",
       "answers from the indexed data, complete with citations and links to the original sources.\n",
       "Designed for seamless integration as a Plugin with Semantic Kernel, Microsoft Copilot and ChatGPT,\n",
       "Kernel Memory enhances data-driven features in applications built for most popular AI platforms.\n",
       "Kernel Memory works and scales at best when running as an asynchronous Web Service, allowing to\n",
       "ingest thousands of documents and information without blocking your app.\n",
       "However, Kernel Memory can also run in serverless mode, embedding MemoryServerless class instance in\n",
       ".NET backend/console/desktop apps in synchronous mode. This approach works as well as in ASP.NET\n",
       "Web APIs and Azure Functions. Each request is processed immediately, although calling clients are\n",
       "responsible for handling transient errors.\n",
       "Depending on your scenarios, you might want to run all the code locally inside your process, or\n",
       "remotely through an asynchronous and scalable service.\n",
       "If you’re importing small files, and need only C# and can block the process during the import, local-in-\n",
       "process execution can be fine, using the MemoryServerless seen above.\n",
       "However, if you are in one of these scenarios:\n",
       "I’d just like a web service to import data and send queries to answer\n",
       "My app is written in TypeScript, Java, Rust, or some other language\n",
       "I’m importing big documents that can require minutes to process, and I don’t want to block the\n",
       "user interface\n",
       "I need memory import to run independently, supporting failures and retry logic\n",
       "I want to define custom pipelines mixing multiple languages like Python, TypeScript, etc\n",
       "then you can deploy Kernel Memory as a backend service, plugging in the default handlers, or your\n",
       "custom Python/TypeScript/Java/etc. handlers, and leveraging the asynchronous non-blocking memory\n",
       "encoding process, sending documents and asking questions using the MemoryWebClient.\n",
       "Here you can find a complete set of instruction about how to run the Kernel Memory service.\n",
       "Kernel Memory (KM) is a service built on the feedback received and lessons learned from developing\n",
       "Semantic Kernel (SK) and Semantic Memory (SM). It provides several features that would otherwise have\n",
       "to be developed manually, such as storing files, extracting text from files, providing a framework to\n",
       "secure users’ data, etc. The KM codebase is entirely in .NET, which eliminates the need to write and\n",
       "maintain features in multiple languages. As a service, KM can be used from any language, tool, or\n",
       "platform, e.g. browser extensions and ChatGPT assistants.\n",
       "Semantic Memory (SM) is a library for C#, Python, and Java that wraps direct calls to databases and\n",
       "supports vector search. It was developed as part of the Semantic Kernel (SK) project and serves as the\n",
       "first public iteration of long-term memory. The core library is maintained in three languages, while the\n",
       "list of supported storage engines (known as “connectors”) varies across languages.\n",
       "Here’s comparison table:\n",
       "Feature Kernel Memory Semantic Memory\n",
       "Data formats Web pages, PDF, Images, Word, PowerPoint,\n",
       "Excel, Markdown, Text, JSON, HTML Text only\n",
       "Search Cosine similarity, Hybrid search with filters\n",
       "(AND/OR conditions) Cosine similarity\n",
       "Language support\n",
       "Any language, command line tools, browser\n",
       "extensions, low-code/no-code apps,\n",
       "chatbots, assistants, etc.\n",
       "C#, Python, Java\n",
       "Storage engines\n",
       "Azure AI Search, Elasticsearch, MongoDB\n",
       "Atlas, Postgres+pgvector, Qdrant, Redis, SQL\n",
       "Server, In memory KNN, On disk KNN.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.8773293</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:50:40Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_overview ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ application/pdf ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 7eada697c0ce4a45a905ee4a796cc674 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 0e2d6cae4aff455a8a9b9f7dbec3459a ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ overview ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>, Text, JSON, HTML Text only\n",
       "Search Cosine similarity, Hybrid search with filters\n",
       "(AND/OR conditions) Cosine similarity\n",
       "Language support\n",
       "Any language, command line tools, browser\n",
       "extensions, low-code/no-code apps,\n",
       "chatbots, assistants, etc.\n",
       "C#, Python, Java\n",
       "Storage engines\n",
       "Azure AI Search, Elasticsearch, MongoDB\n",
       "Atlas, Postgres+pgvector, Qdrant, Redis, SQL\n",
       "Server, In memory KNN, On disk KNN.\n",
       "Azure AI Search, Chroma, DuckDB,\n",
       "Kusto, Milvus, MongoDB, Pinecone,\n",
       "Postgres, Qdrant, Redis, SQLite,\n",
       "Weaviate\n",
       "File storage Disk, Azure Blobs, AWS S3, MongoDB Atlas,\n",
       "In memory (volatile) -\n",
       "RAG Yes, with sources lookup -\n",
       "Summarization Yes -\n",
       "OCR Yes via Azure Document Intelligence -\n",
       "Security Filters Yes -\n",
       "Large document\n",
       "ingestion\n",
       "Yes, including async processing using queues\n",
       "(Azure Queues, RabbitMQ, File based or In\n",
       "memory queues)\n",
       "-\n",
       "Document storage Yes -\n",
       "Custom storage\n",
       "schema some DBs -\n",
       "Vector DBs with\n",
       "internal embedding Yes -\n",
       "Concurrent write to\n",
       "multiple vector DBs Yes -\n",
       "LLMs\n",
       "Azure OpenAI, OpenAI, Anthropic, Ollama,\n",
       "LLamaSharp, LM Studio, Semantic Kernel\n",
       "connectors\n",
       "Azure OpenAI, OpenAI, Gemini,\n",
       "Hugging Face, ONNX, custom ones,\n",
       "etc.\n",
       "LLMs with dedicated\n",
       "tokenization Yes No\n",
       "Cloud deployment Yes -\n",
       "Web service with\n",
       "OpenAPI Yes -\n",
       "Quickstart: test KM in few minutes\n",
       "Memory service, web clients and plugins\n",
       "Memory API, memory ingestion and information retrieval\n",
       "KM Extensions: vector DBs, AI models, Data formats, Orchestration, Document storage\n",
       "Embedding serverless memory in .NET apps\n",
       "Security, service and users\n",
       "How-to guides, customizing KM and examples\n",
       "Concepts, KM glossary\n",
       "KM packages\n",
       "Kernel Memory\n",
       "Synchronous Memory API (aka “serverless”)\n",
       "Memory as a Service - Asynchronous API\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "Kernel Memory (KM) and SK Semantic Memory\n",
       "(SM)\n",
       "Topics\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.7996152</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>1</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:50:40Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_overview ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ application/pdf ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 7eada697c0ce4a45a905ee4a796cc674 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 61aadab7bffc4428bcbd709334288a28 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 1 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ overview ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_concept_index/51fc0f664e8e475cae64f9ca3d3c8966</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_concept_index</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>51fc0f664e8e475cae64f9ca3d3c8966</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>text/plain</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>content.txt</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>/download?index=kernel-memory-index&amp;documentId=km_concept_index&amp;filename=content.txt</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>Kernel Memory leverages vector storage to save the meaning of the documents ingested into the service, solutions like Azure AI Search, Qdrant, Elastic Search, Redis etc.\n",
       "\n",
       "Typically, storage solutions offer a maximum capacity for each collection, and often one needs to clearly separate data over distinct collections for security, privacy or other important reasons.\n",
       "\n",
       "In KM terms, these collection are called “indexes”.\n",
       "\n",
       "When storing information, when searching, and when asking questions, KM is always working within the boundaries of one index. Data in one index never leaks into other indexes.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.8017822</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:51:07Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_concept_index ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ text/plain ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 51fc0f664e8e475cae64f9ca3d3c8966 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 135bb5bd97234a31a3d5664350fedda7 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ concept ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details><style>\r\n",
       ".dni-code-hint {\r\n",
       "    font-style: italic;\r\n",
       "    overflow: hidden;\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview {\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview td {\r\n",
       "    vertical-align: top;\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "details.dni-treeview {\r\n",
       "    padding-left: 1em;\r\n",
       "}\r\n",
       "table td {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "table tr { \r\n",
       "    vertical-align: top; \r\n",
       "    margin: 0em 0px;\r\n",
       "}\r\n",
       "table tr td pre \r\n",
       "{ \r\n",
       "    vertical-align: top !important; \r\n",
       "    margin: 0em 0px !important;\r\n",
       "} \r\n",
       "table th {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "</style>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "// 多个文档过滤器\n",
    "var docsFilter =new List<MemoryFilter>()\n",
    "{\n",
    "    MemoryFilters.ByDocument(\"km_overview\"),\n",
    "    MemoryFilters.ByDocument(\"km_concept_index\")\n",
    "};\n",
    "\n",
    "// 记忆问答\n",
    "var answer = await memory.AskAsync(\n",
    "    question: \"What is Kernel Memory?\", \n",
    "    index: \"kernel-memory-index\", \n",
    "    filters: docsFilter);\n",
    "\n",
    "answer.Display();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<details open=\"open\" class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.SearchResult</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Query</td><td><div class=\"dni-plaintext\"><pre>What is Kernel Memory?</pre></div></td></tr><tr><td>NoResult</td><td><div class=\"dni-plaintext\"><pre>False</pre></div></td></tr><tr><td>Results</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_overview/7eada697c0ce4a45a905ee4a796cc674</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_overview</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>7eada697c0ce4a45a905ee4a796cc674</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>application/pdf</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>KM_Overview.pdf</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>/download?index=kernel-memory-index&amp;documentId=km_overview&amp;filename=KM_Overview.pdf</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>licenselicense MITMIT DiscordDiscord 404 online404 online\n",
       "Kernel Memory (KM) is a multi-modal AI Service specialized in the efficient indexing of datasets\n",
       "through custom continuous data hybrid pipelines, with support for Retrieval Augmented Generation (\n",
       "RAG), synthetic memory, prompt engineering, and custom semantic memory processing.\n",
       "KM is available as a Web Service, as a Docker container, a Plugin for ChatGPT/Copilot/Semantic\n",
       "Kernel, and as a .NET library for embedded applications.\n",
       "Utilizing advanced embeddings and LLMs, the system enables Natural Language querying for obtaining\n",
       "answers from the indexed data, complete with citations and links to the original sources.\n",
       "Designed for seamless integration as a Plugin with Semantic Kernel, Microsoft Copilot and ChatGPT,\n",
       "Kernel Memory enhances data-driven features in applications built for most popular AI platforms.\n",
       "Kernel Memory works and scales at best when running as an asynchronous Web Service, allowing to\n",
       "ingest thousands of documents and information without blocking your app.\n",
       "However, Kernel Memory can also run in serverless mode, embedding MemoryServerless class instance in\n",
       ".NET backend/console/desktop apps in synchronous mode. This approach works as well as in ASP.NET\n",
       "Web APIs and Azure Functions. Each request is processed immediately, although calling clients are\n",
       "responsible for handling transient errors.\n",
       "Depending on your scenarios, you might want to run all the code locally inside your process, or\n",
       "remotely through an asynchronous and scalable service.\n",
       "If you’re importing small files, and need only C# and can block the process during the import, local-in-\n",
       "process execution can be fine, using the MemoryServerless seen above.\n",
       "However, if you are in one of these scenarios:\n",
       "I’d just like a web service to import data and send queries to answer\n",
       "My app is written in TypeScript, Java, Rust, or some other language\n",
       "I’m importing big documents that can require minutes to process, and I don’t want to block the\n",
       "user interface\n",
       "I need memory import to run independently, supporting failures and retry logic\n",
       "I want to define custom pipelines mixing multiple languages like Python, TypeScript, etc\n",
       "then you can deploy Kernel Memory as a backend service, plugging in the default handlers, or your\n",
       "custom Python/TypeScript/Java/etc. handlers, and leveraging the asynchronous non-blocking memory\n",
       "encoding process, sending documents and asking questions using the MemoryWebClient.\n",
       "Here you can find a complete set of instruction about how to run the Kernel Memory service.\n",
       "Kernel Memory (KM) is a service built on the feedback received and lessons learned from developing\n",
       "Semantic Kernel (SK) and Semantic Memory (SM). It provides several features that would otherwise have\n",
       "to be developed manually, such as storing files, extracting text from files, providing a framework to\n",
       "secure users’ data, etc. The KM codebase is entirely in .NET, which eliminates the need to write and\n",
       "maintain features in multiple languages. As a service, KM can be used from any language, tool, or\n",
       "platform, e.g. browser extensions and ChatGPT assistants.\n",
       "Semantic Memory (SM) is a library for C#, Python, and Java that wraps direct calls to databases and\n",
       "supports vector search. It was developed as part of the Semantic Kernel (SK) project and serves as the\n",
       "first public iteration of long-term memory. The core library is maintained in three languages, while the\n",
       "list of supported storage engines (known as “connectors”) varies across languages.\n",
       "Here’s comparison table:\n",
       "Feature Kernel Memory Semantic Memory\n",
       "Data formats Web pages, PDF, Images, Word, PowerPoint,\n",
       "Excel, Markdown, Text, JSON, HTML Text only\n",
       "Search Cosine similarity, Hybrid search with filters\n",
       "(AND/OR conditions) Cosine similarity\n",
       "Language support\n",
       "Any language, command line tools, browser\n",
       "extensions, low-code/no-code apps,\n",
       "chatbots, assistants, etc.\n",
       "C#, Python, Java\n",
       "Storage engines\n",
       "Azure AI Search, Elasticsearch, MongoDB\n",
       "Atlas, Postgres+pgvector, Qdrant, Redis, SQL\n",
       "Server, In memory KNN, On disk KNN.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.8773293</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:50:40Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_overview ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ application/pdf ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 7eada697c0ce4a45a905ee4a796cc674 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 0e2d6cae4aff455a8a9b9f7dbec3459a ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ overview ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>, Text, JSON, HTML Text only\n",
       "Search Cosine similarity, Hybrid search with filters\n",
       "(AND/OR conditions) Cosine similarity\n",
       "Language support\n",
       "Any language, command line tools, browser\n",
       "extensions, low-code/no-code apps,\n",
       "chatbots, assistants, etc.\n",
       "C#, Python, Java\n",
       "Storage engines\n",
       "Azure AI Search, Elasticsearch, MongoDB\n",
       "Atlas, Postgres+pgvector, Qdrant, Redis, SQL\n",
       "Server, In memory KNN, On disk KNN.\n",
       "Azure AI Search, Chroma, DuckDB,\n",
       "Kusto, Milvus, MongoDB, Pinecone,\n",
       "Postgres, Qdrant, Redis, SQLite,\n",
       "Weaviate\n",
       "File storage Disk, Azure Blobs, AWS S3, MongoDB Atlas,\n",
       "In memory (volatile) -\n",
       "RAG Yes, with sources lookup -\n",
       "Summarization Yes -\n",
       "OCR Yes via Azure Document Intelligence -\n",
       "Security Filters Yes -\n",
       "Large document\n",
       "ingestion\n",
       "Yes, including async processing using queues\n",
       "(Azure Queues, RabbitMQ, File based or In\n",
       "memory queues)\n",
       "-\n",
       "Document storage Yes -\n",
       "Custom storage\n",
       "schema some DBs -\n",
       "Vector DBs with\n",
       "internal embedding Yes -\n",
       "Concurrent write to\n",
       "multiple vector DBs Yes -\n",
       "LLMs\n",
       "Azure OpenAI, OpenAI, Anthropic, Ollama,\n",
       "LLamaSharp, LM Studio, Semantic Kernel\n",
       "connectors\n",
       "Azure OpenAI, OpenAI, Gemini,\n",
       "Hugging Face, ONNX, custom ones,\n",
       "etc.\n",
       "LLMs with dedicated\n",
       "tokenization Yes No\n",
       "Cloud deployment Yes -\n",
       "Web service with\n",
       "OpenAPI Yes -\n",
       "Quickstart: test KM in few minutes\n",
       "Memory service, web clients and plugins\n",
       "Memory API, memory ingestion and information retrieval\n",
       "KM Extensions: vector DBs, AI models, Data formats, Orchestration, Document storage\n",
       "Embedding serverless memory in .NET apps\n",
       "Security, service and users\n",
       "How-to guides, customizing KM and examples\n",
       "Concepts, KM glossary\n",
       "KM packages\n",
       "Kernel Memory\n",
       "Synchronous Memory API (aka “serverless”)\n",
       "Memory as a Service - Asynchronous API\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "Kernel Memory (KM) and SK Semantic Memory\n",
       "(SM)\n",
       "Topics\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.7996152</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>1</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:50:40Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_overview ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ application/pdf ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 7eada697c0ce4a45a905ee4a796cc674 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 61aadab7bffc4428bcbd709334288a28 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 1 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ overview ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_concept_index/51fc0f664e8e475cae64f9ca3d3c8966</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_concept_index</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>51fc0f664e8e475cae64f9ca3d3c8966</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>text/plain</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>content.txt</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>/download?index=kernel-memory-index&amp;documentId=km_concept_index&amp;filename=content.txt</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>Kernel Memory leverages vector storage to save the meaning of the documents ingested into the service, solutions like Azure AI Search, Qdrant, Elastic Search, Redis etc.\n",
       "\n",
       "Typically, storage solutions offer a maximum capacity for each collection, and often one needs to clearly separate data over distinct collections for security, privacy or other important reasons.\n",
       "\n",
       "In KM terms, these collection are called “indexes”.\n",
       "\n",
       "When storing information, when searching, and when asking questions, KM is always working within the boundaries of one index. Data in one index never leaks into other indexes.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.8017822</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:51:07Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_concept_index ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ text/plain ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 51fc0f664e8e475cae64f9ca3d3c8966 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 135bb5bd97234a31a3d5664350fedda7 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ concept ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details><style>\r\n",
       ".dni-code-hint {\r\n",
       "    font-style: italic;\r\n",
       "    overflow: hidden;\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview {\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview td {\r\n",
       "    vertical-align: top;\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "details.dni-treeview {\r\n",
       "    padding-left: 1em;\r\n",
       "}\r\n",
       "table td {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "table tr { \r\n",
       "    vertical-align: top; \r\n",
       "    margin: 0em 0px;\r\n",
       "}\r\n",
       "table tr td pre \r\n",
       "{ \r\n",
       "    vertical-align: top !important; \r\n",
       "    margin: 0em 0px !important;\r\n",
       "} \r\n",
       "table th {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "</style>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "// 记忆检索\n",
    "var searchResult = await memory.SearchAsync(\n",
    "    query: \"What is Kernel Memory?\", \n",
    "    index: \"kernel-memory-index\",\n",
    "    filters: docsFilter);\n",
    "\n",
    "searchResult.Display();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 按标签过滤"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 单标签过滤"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<details open=\"open\" class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Kernel Memory (KM) is a service that utilizes vector storage to save the meaning of documents that are ingested into it. It works with various storage solutions like Azure AI Search, Qdrant, Elastic Search, and Redis. In KM, data is organized into collections known as &quot;indexes,&quot; which are used to se...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>StreamState</td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td>Question</td><td><div class=\"dni-plaintext\"><pre>What is Kernel Memory?</pre></div></td></tr><tr><td>NoResult</td><td><div class=\"dni-plaintext\"><pre>False</pre></div></td></tr><tr><td>NoResultReason</td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td>Result</td><td><div class=\"dni-plaintext\"><pre>Kernel Memory (KM) is a service that utilizes vector storage to save the meaning of documents that are ingested into it. It works with various storage solutions like Azure AI Search, Qdrant, Elastic Search, and Redis. In KM, data is organized into collections known as &quot;indexes,&quot; which are used to separate data for reasons such as security and privacy. Each index operates independently, ensuring that data from one index does not leak into another.\n",
       "\n",
       "When information is uploaded into KM, it is packaged as a document. A document can be a URL, one or more files (including images), or a string. Each document has a unique ID, which can be assigned by the user or automatically by the system. This ID is crucial for updating or deleting documents without duplicating data. When searching or asking questions, users can specify the scope of the search, such as an entire index, a specific document, or a particular file within a document.</pre></div></td></tr><tr><td>TokenUsage</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.TokenUsage</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Timestamp</td><td><span>2025-04-03 02:56:53Z</span></td></tr><tr><td>ServiceType</td><td><div class=\"dni-plaintext\"><pre>Azure OpenAI</pre></div></td></tr><tr><td>ModelType</td><td><div class=\"dni-plaintext\"><pre>TextGeneration</pre></div></td></tr><tr><td>ModelName</td><td><div class=\"dni-plaintext\"><pre>gpt-4o</pre></div></td></tr><tr><td>TokenizerTokensIn</td><td><div class=\"dni-plaintext\"><pre>396</pre></div></td></tr><tr><td>TokenizerTokensOut</td><td><div class=\"dni-plaintext\"><pre>190</pre></div></td></tr><tr><td>ServiceTokensIn</td><td><div class=\"dni-plaintext\"><pre>400</pre></div></td></tr><tr><td>ServiceTokensOut</td><td><div class=\"dni-plaintext\"><pre>191</pre></div></td></tr><tr><td>ServiceReasoningTokens</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>RelevantSources</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_concept_index/51fc0f664e8e475cae64f9ca3d3c8966</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_concept_index</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>51fc0f664e8e475cae64f9ca3d3c8966</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>text/plain</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>content.txt</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>/download?index=kernel-memory-index&amp;documentId=km_concept_index&amp;filename=content.txt</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>Kernel Memory leverages vector storage to save the meaning of the documents ingested into the service, solutions like Azure AI Search, Qdrant, Elastic Search, Redis etc.\n",
       "\n",
       "Typically, storage solutions offer a maximum capacity for each collection, and often one needs to clearly separate data over distinct collections for security, privacy or other important reasons.\n",
       "\n",
       "In KM terms, these collection are called “indexes”.\n",
       "\n",
       "When storing information, when searching, and when asking questions, KM is always working within the boundaries of one index. Data in one index never leaks into other indexes.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.8017822</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:51:07Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_concept_index ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ text/plain ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 51fc0f664e8e475cae64f9ca3d3c8966 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 135bb5bd97234a31a3d5664350fedda7 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ concept ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_concept_document/fdebc7160637495e95760520aaae284f</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_concept_document</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>fdebc7160637495e95760520aaae284f</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>text/x-uri</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>content.url</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>https://raw.githubusercontent.com/microsoft/kernel-memory/refs/heads/main/docs/concepts/document.md</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>---\n",
       "nav_order: 2\n",
       "parent: Concepts\n",
       "title: Document\n",
       "permalink: /concepts/document\n",
       "layout: default\n",
       "---\n",
       "# Document\n",
       "\n",
       "When uploading information into KM, the data is always packaged as a document.\n",
       "\n",
       "A document can consist of a URL to a web page to download, one or more files,\n",
       "including images, or just a string to be stored.\n",
       "\n",
       "Regardless of source and format, a client stores documents.\n",
       "\n",
       "When searching and asking questions, you can specify the scope of the search,\n",
       "e.g. whether to consider an entire index, just a document, or maybe just one of\n",
       "the files in a document.\n",
       "\n",
       "One important aspect to highlight is that documents have one unique ID, that you\n",
       "can either assign or is automatically assigned by the system. This ID allows to\n",
       "update the same files, without the risk of duplicating memories, and to delete\n",
       "the information at any moment.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.7300163</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:51:35Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_concept_document ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ text/x-uri ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ fdebc7160637495e95760520aaae284f ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ cdabfa7447874b189f6a50d578697043 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ concept ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details><style>\r\n",
       ".dni-code-hint {\r\n",
       "    font-style: italic;\r\n",
       "    overflow: hidden;\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview {\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview td {\r\n",
       "    vertical-align: top;\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "details.dni-treeview {\r\n",
       "    padding-left: 1em;\r\n",
       "}\r\n",
       "table td {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "table tr { \r\n",
       "    vertical-align: top; \r\n",
       "    margin: 0em 0px;\r\n",
       "}\r\n",
       "table tr td pre \r\n",
       "{ \r\n",
       "    vertical-align: top !important; \r\n",
       "    margin: 0em 0px !important;\r\n",
       "} \r\n",
       "table th {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "</style>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "var tagFilter = MemoryFilters.ByTag(\"type\", \"concept\");\n",
    "\n",
    "// 记忆问答\n",
    "var answer = await memory.AskAsync(\n",
    "    question: \"What is Kernel Memory?\", \n",
    "    index: \"kernel-memory-index\", \n",
    "    filter: tagFilter);\n",
    "\n",
    "answer.Display();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<details open=\"open\" class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.SearchResult</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Query</td><td><div class=\"dni-plaintext\"><pre>What is Kernel Memory?</pre></div></td></tr><tr><td>NoResult</td><td><div class=\"dni-plaintext\"><pre>False</pre></div></td></tr><tr><td>Results</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_concept_index/51fc0f664e8e475cae64f9ca3d3c8966</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_concept_index</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>51fc0f664e8e475cae64f9ca3d3c8966</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>text/plain</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>content.txt</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>/download?index=kernel-memory-index&amp;documentId=km_concept_index&amp;filename=content.txt</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>Kernel Memory leverages vector storage to save the meaning of the documents ingested into the service, solutions like Azure AI Search, Qdrant, Elastic Search, Redis etc.\n",
       "\n",
       "Typically, storage solutions offer a maximum capacity for each collection, and often one needs to clearly separate data over distinct collections for security, privacy or other important reasons.\n",
       "\n",
       "In KM terms, these collection are called “indexes”.\n",
       "\n",
       "When storing information, when searching, and when asking questions, KM is always working within the boundaries of one index. Data in one index never leaks into other indexes.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.8017822</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:51:07Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_concept_index ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ text/plain ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 51fc0f664e8e475cae64f9ca3d3c8966 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 135bb5bd97234a31a3d5664350fedda7 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ concept ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_concept_document/fdebc7160637495e95760520aaae284f</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_concept_document</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>fdebc7160637495e95760520aaae284f</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>text/x-uri</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>content.url</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>https://raw.githubusercontent.com/microsoft/kernel-memory/refs/heads/main/docs/concepts/document.md</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>---\n",
       "nav_order: 2\n",
       "parent: Concepts\n",
       "title: Document\n",
       "permalink: /concepts/document\n",
       "layout: default\n",
       "---\n",
       "# Document\n",
       "\n",
       "When uploading information into KM, the data is always packaged as a document.\n",
       "\n",
       "A document can consist of a URL to a web page to download, one or more files,\n",
       "including images, or just a string to be stored.\n",
       "\n",
       "Regardless of source and format, a client stores documents.\n",
       "\n",
       "When searching and asking questions, you can specify the scope of the search,\n",
       "e.g. whether to consider an entire index, just a document, or maybe just one of\n",
       "the files in a document.\n",
       "\n",
       "One important aspect to highlight is that documents have one unique ID, that you\n",
       "can either assign or is automatically assigned by the system. This ID allows to\n",
       "update the same files, without the risk of duplicating memories, and to delete\n",
       "the information at any moment.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.7300163</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:51:35Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_concept_document ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ text/x-uri ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ fdebc7160637495e95760520aaae284f ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ cdabfa7447874b189f6a50d578697043 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ concept ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details><style>\r\n",
       ".dni-code-hint {\r\n",
       "    font-style: italic;\r\n",
       "    overflow: hidden;\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview {\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview td {\r\n",
       "    vertical-align: top;\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "details.dni-treeview {\r\n",
       "    padding-left: 1em;\r\n",
       "}\r\n",
       "table td {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "table tr { \r\n",
       "    vertical-align: top; \r\n",
       "    margin: 0em 0px;\r\n",
       "}\r\n",
       "table tr td pre \r\n",
       "{ \r\n",
       "    vertical-align: top !important; \r\n",
       "    margin: 0em 0px !important;\r\n",
       "} \r\n",
       "table th {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "</style>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "// 记忆检索\n",
    "var searchResult = await memory.SearchAsync(\n",
    "    query: \"What is Kernel Memory?\", \n",
    "    index: \"kernel-memory-index\",\n",
    "    filter: tagFilter);\n",
    "\n",
    "searchResult.Display();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 多标签过滤"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<details open=\"open\" class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Kernel Memory (KM) is a multi-modal AI service designed for efficient indexing of datasets through custom continuous data hybrid pipelines. It supports various features such as Retrieval Augmented Generation (RAG), synthetic memory, prompt engineering, and custom semantic memory processing. KM is av...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>StreamState</td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td>Question</td><td><div class=\"dni-plaintext\"><pre>What is Kernel Memory?</pre></div></td></tr><tr><td>NoResult</td><td><div class=\"dni-plaintext\"><pre>False</pre></div></td></tr><tr><td>NoResultReason</td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td>Result</td><td><div class=\"dni-plaintext\"><pre>Kernel Memory (KM) is a multi-modal AI service designed for efficient indexing of datasets through custom continuous data hybrid pipelines. It supports various features such as Retrieval Augmented Generation (RAG), synthetic memory, prompt engineering, and custom semantic memory processing. KM is available as a web service, a Docker container, a plugin for ChatGPT/Copilot/Semantic Kernel, and as a .NET library for embedded applications.\n",
       "\n",
       "KM utilizes advanced embeddings and large language models (LLMs) to enable natural language querying for obtaining answers from indexed data, complete with citations and links to the original sources. It is designed for seamless integration as a plugin with Semantic Kernel, Microsoft Copilot, and ChatGPT, enhancing data-driven features in applications built for popular AI platforms.\n",
       "\n",
       "Kernel Memory works best as an asynchronous web service, allowing the ingestion of thousands of documents and information without blocking the application. It can also run in serverless mode, embedding the MemoryServerless class instance in .NET backend/console/desktop apps in synchronous mode. This approach is suitable for ASP.NET Web APIs and Azure Functions, where each request is processed immediately, although calling clients are responsible for handling transient errors.\n",
       "\n",
       "KM provides several features that would otherwise need to be developed manually, such as storing files, extracting text from files, and providing a framework to secure users&#39; data. The KM codebase is entirely in .NET, eliminating the need to write and maintain features in multiple languages. As a service, KM can be used from any</pre></div></td></tr><tr><td>TokenUsage</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.TokenUsage</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Timestamp</td><td><span>2025-04-03 02:57:36Z</span></td></tr><tr><td>ServiceType</td><td><div class=\"dni-plaintext\"><pre>Azure OpenAI</pre></div></td></tr><tr><td>ModelType</td><td><div class=\"dni-plaintext\"><pre>TextGeneration</pre></div></td></tr><tr><td>ModelName</td><td><div class=\"dni-plaintext\"><pre>gpt-4o</pre></div></td></tr><tr><td>TokenizerTokensIn</td><td><div class=\"dni-plaintext\"><pre>1725</pre></div></td></tr><tr><td>TokenizerTokensOut</td><td><div class=\"dni-plaintext\"><pre>301</pre></div></td></tr><tr><td>ServiceTokensIn</td><td><div class=\"dni-plaintext\"><pre>1716</pre></div></td></tr><tr><td>ServiceTokensOut</td><td><div class=\"dni-plaintext\"><pre>300</pre></div></td></tr><tr><td>ServiceReasoningTokens</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>RelevantSources</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_overview/7eada697c0ce4a45a905ee4a796cc674</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_overview</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>7eada697c0ce4a45a905ee4a796cc674</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>application/pdf</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>KM_Overview.pdf</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>/download?index=kernel-memory-index&amp;documentId=km_overview&amp;filename=KM_Overview.pdf</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>licenselicense MITMIT DiscordDiscord 404 online404 online\n",
       "Kernel Memory (KM) is a multi-modal AI Service specialized in the efficient indexing of datasets\n",
       "through custom continuous data hybrid pipelines, with support for Retrieval Augmented Generation (\n",
       "RAG), synthetic memory, prompt engineering, and custom semantic memory processing.\n",
       "KM is available as a Web Service, as a Docker container, a Plugin for ChatGPT/Copilot/Semantic\n",
       "Kernel, and as a .NET library for embedded applications.\n",
       "Utilizing advanced embeddings and LLMs, the system enables Natural Language querying for obtaining\n",
       "answers from the indexed data, complete with citations and links to the original sources.\n",
       "Designed for seamless integration as a Plugin with Semantic Kernel, Microsoft Copilot and ChatGPT,\n",
       "Kernel Memory enhances data-driven features in applications built for most popular AI platforms.\n",
       "Kernel Memory works and scales at best when running as an asynchronous Web Service, allowing to\n",
       "ingest thousands of documents and information without blocking your app.\n",
       "However, Kernel Memory can also run in serverless mode, embedding MemoryServerless class instance in\n",
       ".NET backend/console/desktop apps in synchronous mode. This approach works as well as in ASP.NET\n",
       "Web APIs and Azure Functions. Each request is processed immediately, although calling clients are\n",
       "responsible for handling transient errors.\n",
       "Depending on your scenarios, you might want to run all the code locally inside your process, or\n",
       "remotely through an asynchronous and scalable service.\n",
       "If you’re importing small files, and need only C# and can block the process during the import, local-in-\n",
       "process execution can be fine, using the MemoryServerless seen above.\n",
       "However, if you are in one of these scenarios:\n",
       "I’d just like a web service to import data and send queries to answer\n",
       "My app is written in TypeScript, Java, Rust, or some other language\n",
       "I’m importing big documents that can require minutes to process, and I don’t want to block the\n",
       "user interface\n",
       "I need memory import to run independently, supporting failures and retry logic\n",
       "I want to define custom pipelines mixing multiple languages like Python, TypeScript, etc\n",
       "then you can deploy Kernel Memory as a backend service, plugging in the default handlers, or your\n",
       "custom Python/TypeScript/Java/etc. handlers, and leveraging the asynchronous non-blocking memory\n",
       "encoding process, sending documents and asking questions using the MemoryWebClient.\n",
       "Here you can find a complete set of instruction about how to run the Kernel Memory service.\n",
       "Kernel Memory (KM) is a service built on the feedback received and lessons learned from developing\n",
       "Semantic Kernel (SK) and Semantic Memory (SM). It provides several features that would otherwise have\n",
       "to be developed manually, such as storing files, extracting text from files, providing a framework to\n",
       "secure users’ data, etc. The KM codebase is entirely in .NET, which eliminates the need to write and\n",
       "maintain features in multiple languages. As a service, KM can be used from any language, tool, or\n",
       "platform, e.g. browser extensions and ChatGPT assistants.\n",
       "Semantic Memory (SM) is a library for C#, Python, and Java that wraps direct calls to databases and\n",
       "supports vector search. It was developed as part of the Semantic Kernel (SK) project and serves as the\n",
       "first public iteration of long-term memory. The core library is maintained in three languages, while the\n",
       "list of supported storage engines (known as “connectors”) varies across languages.\n",
       "Here’s comparison table:\n",
       "Feature Kernel Memory Semantic Memory\n",
       "Data formats Web pages, PDF, Images, Word, PowerPoint,\n",
       "Excel, Markdown, Text, JSON, HTML Text only\n",
       "Search Cosine similarity, Hybrid search with filters\n",
       "(AND/OR conditions) Cosine similarity\n",
       "Language support\n",
       "Any language, command line tools, browser\n",
       "extensions, low-code/no-code apps,\n",
       "chatbots, assistants, etc.\n",
       "C#, Python, Java\n",
       "Storage engines\n",
       "Azure AI Search, Elasticsearch, MongoDB\n",
       "Atlas, Postgres+pgvector, Qdrant, Redis, SQL\n",
       "Server, In memory KNN, On disk KNN.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.8773293</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:50:40Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_overview ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ application/pdf ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 7eada697c0ce4a45a905ee4a796cc674 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 0e2d6cae4aff455a8a9b9f7dbec3459a ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ overview ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>, Text, JSON, HTML Text only\n",
       "Search Cosine similarity, Hybrid search with filters\n",
       "(AND/OR conditions) Cosine similarity\n",
       "Language support\n",
       "Any language, command line tools, browser\n",
       "extensions, low-code/no-code apps,\n",
       "chatbots, assistants, etc.\n",
       "C#, Python, Java\n",
       "Storage engines\n",
       "Azure AI Search, Elasticsearch, MongoDB\n",
       "Atlas, Postgres+pgvector, Qdrant, Redis, SQL\n",
       "Server, In memory KNN, On disk KNN.\n",
       "Azure AI Search, Chroma, DuckDB,\n",
       "Kusto, Milvus, MongoDB, Pinecone,\n",
       "Postgres, Qdrant, Redis, SQLite,\n",
       "Weaviate\n",
       "File storage Disk, Azure Blobs, AWS S3, MongoDB Atlas,\n",
       "In memory (volatile) -\n",
       "RAG Yes, with sources lookup -\n",
       "Summarization Yes -\n",
       "OCR Yes via Azure Document Intelligence -\n",
       "Security Filters Yes -\n",
       "Large document\n",
       "ingestion\n",
       "Yes, including async processing using queues\n",
       "(Azure Queues, RabbitMQ, File based or In\n",
       "memory queues)\n",
       "-\n",
       "Document storage Yes -\n",
       "Custom storage\n",
       "schema some DBs -\n",
       "Vector DBs with\n",
       "internal embedding Yes -\n",
       "Concurrent write to\n",
       "multiple vector DBs Yes -\n",
       "LLMs\n",
       "Azure OpenAI, OpenAI, Anthropic, Ollama,\n",
       "LLamaSharp, LM Studio, Semantic Kernel\n",
       "connectors\n",
       "Azure OpenAI, OpenAI, Gemini,\n",
       "Hugging Face, ONNX, custom ones,\n",
       "etc.\n",
       "LLMs with dedicated\n",
       "tokenization Yes No\n",
       "Cloud deployment Yes -\n",
       "Web service with\n",
       "OpenAPI Yes -\n",
       "Quickstart: test KM in few minutes\n",
       "Memory service, web clients and plugins\n",
       "Memory API, memory ingestion and information retrieval\n",
       "KM Extensions: vector DBs, AI models, Data formats, Orchestration, Document storage\n",
       "Embedding serverless memory in .NET apps\n",
       "Security, service and users\n",
       "How-to guides, customizing KM and examples\n",
       "Concepts, KM glossary\n",
       "KM packages\n",
       "Kernel Memory\n",
       "Synchronous Memory API (aka “serverless”)\n",
       "Memory as a Service - Asynchronous API\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "Kernel Memory (KM) and SK Semantic Memory\n",
       "(SM)\n",
       "Topics\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.7996152</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>1</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:50:40Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_overview ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ application/pdf ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 7eada697c0ce4a45a905ee4a796cc674 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 61aadab7bffc4428bcbd709334288a28 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 1 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ overview ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_concept_index/51fc0f664e8e475cae64f9ca3d3c8966</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_concept_index</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>51fc0f664e8e475cae64f9ca3d3c8966</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>text/plain</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>content.txt</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>/download?index=kernel-memory-index&amp;documentId=km_concept_index&amp;filename=content.txt</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>Kernel Memory leverages vector storage to save the meaning of the documents ingested into the service, solutions like Azure AI Search, Qdrant, Elastic Search, Redis etc.\n",
       "\n",
       "Typically, storage solutions offer a maximum capacity for each collection, and often one needs to clearly separate data over distinct collections for security, privacy or other important reasons.\n",
       "\n",
       "In KM terms, these collection are called “indexes”.\n",
       "\n",
       "When storing information, when searching, and when asking questions, KM is always working within the boundaries of one index. Data in one index never leaks into other indexes.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.8017822</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:51:07Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_concept_index ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ text/plain ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 51fc0f664e8e475cae64f9ca3d3c8966 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 135bb5bd97234a31a3d5664350fedda7 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ concept ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr><tr><td>2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_concept_document/fdebc7160637495e95760520aaae284f</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_concept_document</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>fdebc7160637495e95760520aaae284f</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>text/x-uri</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>content.url</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>https://raw.githubusercontent.com/microsoft/kernel-memory/refs/heads/main/docs/concepts/document.md</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>---\n",
       "nav_order: 2\n",
       "parent: Concepts\n",
       "title: Document\n",
       "permalink: /concepts/document\n",
       "layout: default\n",
       "---\n",
       "# Document\n",
       "\n",
       "When uploading information into KM, the data is always packaged as a document.\n",
       "\n",
       "A document can consist of a URL to a web page to download, one or more files,\n",
       "including images, or just a string to be stored.\n",
       "\n",
       "Regardless of source and format, a client stores documents.\n",
       "\n",
       "When searching and asking questions, you can specify the scope of the search,\n",
       "e.g. whether to consider an entire index, just a document, or maybe just one of\n",
       "the files in a document.\n",
       "\n",
       "One important aspect to highlight is that documents have one unique ID, that you\n",
       "can either assign or is automatically assigned by the system. This ID allows to\n",
       "update the same files, without the risk of duplicating memories, and to delete\n",
       "the information at any moment.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.7300163</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:51:35Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_concept_document ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ text/x-uri ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ fdebc7160637495e95760520aaae284f ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ cdabfa7447874b189f6a50d578697043 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ concept ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details><style>\r\n",
       ".dni-code-hint {\r\n",
       "    font-style: italic;\r\n",
       "    overflow: hidden;\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview {\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview td {\r\n",
       "    vertical-align: top;\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "details.dni-treeview {\r\n",
       "    padding-left: 1em;\r\n",
       "}\r\n",
       "table td {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "table tr { \r\n",
       "    vertical-align: top; \r\n",
       "    margin: 0em 0px;\r\n",
       "}\r\n",
       "table tr td pre \r\n",
       "{ \r\n",
       "    vertical-align: top !important; \r\n",
       "    margin: 0em 0px !important;\r\n",
       "} \r\n",
       "table th {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "</style>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "// 多个标签过滤器\n",
    "var tagsFilter = new List<MemoryFilter>()\n",
    "{\n",
    "    MemoryFilters.ByTag(\"type\", \"concept\"),\n",
    "    MemoryFilters.ByTag(\"type\", \"overview\")\n",
    "};\n",
    "\n",
    "// 记忆问答\n",
    "var answer = await memory.AskAsync(\n",
    "    question: \"What is Kernel Memory?\", \n",
    "    index: \"kernel-memory-index\", \n",
    "    filters: tagsFilter);\n",
    "\n",
    "answer.Display();\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<details open=\"open\" class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.SearchResult</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Query</td><td><div class=\"dni-plaintext\"><pre>What is Kernel Memory?</pre></div></td></tr><tr><td>NoResult</td><td><div class=\"dni-plaintext\"><pre>False</pre></div></td></tr><tr><td>Results</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_overview/7eada697c0ce4a45a905ee4a796cc674</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_overview</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>7eada697c0ce4a45a905ee4a796cc674</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>application/pdf</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>KM_Overview.pdf</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>/download?index=kernel-memory-index&amp;documentId=km_overview&amp;filename=KM_Overview.pdf</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>licenselicense MITMIT DiscordDiscord 404 online404 online\n",
       "Kernel Memory (KM) is a multi-modal AI Service specialized in the efficient indexing of datasets\n",
       "through custom continuous data hybrid pipelines, with support for Retrieval Augmented Generation (\n",
       "RAG), synthetic memory, prompt engineering, and custom semantic memory processing.\n",
       "KM is available as a Web Service, as a Docker container, a Plugin for ChatGPT/Copilot/Semantic\n",
       "Kernel, and as a .NET library for embedded applications.\n",
       "Utilizing advanced embeddings and LLMs, the system enables Natural Language querying for obtaining\n",
       "answers from the indexed data, complete with citations and links to the original sources.\n",
       "Designed for seamless integration as a Plugin with Semantic Kernel, Microsoft Copilot and ChatGPT,\n",
       "Kernel Memory enhances data-driven features in applications built for most popular AI platforms.\n",
       "Kernel Memory works and scales at best when running as an asynchronous Web Service, allowing to\n",
       "ingest thousands of documents and information without blocking your app.\n",
       "However, Kernel Memory can also run in serverless mode, embedding MemoryServerless class instance in\n",
       ".NET backend/console/desktop apps in synchronous mode. This approach works as well as in ASP.NET\n",
       "Web APIs and Azure Functions. Each request is processed immediately, although calling clients are\n",
       "responsible for handling transient errors.\n",
       "Depending on your scenarios, you might want to run all the code locally inside your process, or\n",
       "remotely through an asynchronous and scalable service.\n",
       "If you’re importing small files, and need only C# and can block the process during the import, local-in-\n",
       "process execution can be fine, using the MemoryServerless seen above.\n",
       "However, if you are in one of these scenarios:\n",
       "I’d just like a web service to import data and send queries to answer\n",
       "My app is written in TypeScript, Java, Rust, or some other language\n",
       "I’m importing big documents that can require minutes to process, and I don’t want to block the\n",
       "user interface\n",
       "I need memory import to run independently, supporting failures and retry logic\n",
       "I want to define custom pipelines mixing multiple languages like Python, TypeScript, etc\n",
       "then you can deploy Kernel Memory as a backend service, plugging in the default handlers, or your\n",
       "custom Python/TypeScript/Java/etc. handlers, and leveraging the asynchronous non-blocking memory\n",
       "encoding process, sending documents and asking questions using the MemoryWebClient.\n",
       "Here you can find a complete set of instruction about how to run the Kernel Memory service.\n",
       "Kernel Memory (KM) is a service built on the feedback received and lessons learned from developing\n",
       "Semantic Kernel (SK) and Semantic Memory (SM). It provides several features that would otherwise have\n",
       "to be developed manually, such as storing files, extracting text from files, providing a framework to\n",
       "secure users’ data, etc. The KM codebase is entirely in .NET, which eliminates the need to write and\n",
       "maintain features in multiple languages. As a service, KM can be used from any language, tool, or\n",
       "platform, e.g. browser extensions and ChatGPT assistants.\n",
       "Semantic Memory (SM) is a library for C#, Python, and Java that wraps direct calls to databases and\n",
       "supports vector search. It was developed as part of the Semantic Kernel (SK) project and serves as the\n",
       "first public iteration of long-term memory. The core library is maintained in three languages, while the\n",
       "list of supported storage engines (known as “connectors”) varies across languages.\n",
       "Here’s comparison table:\n",
       "Feature Kernel Memory Semantic Memory\n",
       "Data formats Web pages, PDF, Images, Word, PowerPoint,\n",
       "Excel, Markdown, Text, JSON, HTML Text only\n",
       "Search Cosine similarity, Hybrid search with filters\n",
       "(AND/OR conditions) Cosine similarity\n",
       "Language support\n",
       "Any language, command line tools, browser\n",
       "extensions, low-code/no-code apps,\n",
       "chatbots, assistants, etc.\n",
       "C#, Python, Java\n",
       "Storage engines\n",
       "Azure AI Search, Elasticsearch, MongoDB\n",
       "Atlas, Postgres+pgvector, Qdrant, Redis, SQL\n",
       "Server, In memory KNN, On disk KNN.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.8773293</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:50:40Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_overview ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ application/pdf ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 7eada697c0ce4a45a905ee4a796cc674 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 0e2d6cae4aff455a8a9b9f7dbec3459a ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ overview ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>, Text, JSON, HTML Text only\n",
       "Search Cosine similarity, Hybrid search with filters\n",
       "(AND/OR conditions) Cosine similarity\n",
       "Language support\n",
       "Any language, command line tools, browser\n",
       "extensions, low-code/no-code apps,\n",
       "chatbots, assistants, etc.\n",
       "C#, Python, Java\n",
       "Storage engines\n",
       "Azure AI Search, Elasticsearch, MongoDB\n",
       "Atlas, Postgres+pgvector, Qdrant, Redis, SQL\n",
       "Server, In memory KNN, On disk KNN.\n",
       "Azure AI Search, Chroma, DuckDB,\n",
       "Kusto, Milvus, MongoDB, Pinecone,\n",
       "Postgres, Qdrant, Redis, SQLite,\n",
       "Weaviate\n",
       "File storage Disk, Azure Blobs, AWS S3, MongoDB Atlas,\n",
       "In memory (volatile) -\n",
       "RAG Yes, with sources lookup -\n",
       "Summarization Yes -\n",
       "OCR Yes via Azure Document Intelligence -\n",
       "Security Filters Yes -\n",
       "Large document\n",
       "ingestion\n",
       "Yes, including async processing using queues\n",
       "(Azure Queues, RabbitMQ, File based or In\n",
       "memory queues)\n",
       "-\n",
       "Document storage Yes -\n",
       "Custom storage\n",
       "schema some DBs -\n",
       "Vector DBs with\n",
       "internal embedding Yes -\n",
       "Concurrent write to\n",
       "multiple vector DBs Yes -\n",
       "LLMs\n",
       "Azure OpenAI, OpenAI, Anthropic, Ollama,\n",
       "LLamaSharp, LM Studio, Semantic Kernel\n",
       "connectors\n",
       "Azure OpenAI, OpenAI, Gemini,\n",
       "Hugging Face, ONNX, custom ones,\n",
       "etc.\n",
       "LLMs with dedicated\n",
       "tokenization Yes No\n",
       "Cloud deployment Yes -\n",
       "Web service with\n",
       "OpenAPI Yes -\n",
       "Quickstart: test KM in few minutes\n",
       "Memory service, web clients and plugins\n",
       "Memory API, memory ingestion and information retrieval\n",
       "KM Extensions: vector DBs, AI models, Data formats, Orchestration, Document storage\n",
       "Embedding serverless memory in .NET apps\n",
       "Security, service and users\n",
       "How-to guides, customizing KM and examples\n",
       "Concepts, KM glossary\n",
       "KM packages\n",
       "Kernel Memory\n",
       "Synchronous Memory API (aka “serverless”)\n",
       "Memory as a Service - Asynchronous API\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "Kernel Memory (KM) and SK Semantic Memory\n",
       "(SM)\n",
       "Topics\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•\n",
       "•</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.7996152</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>1</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:50:40Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_overview ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ application/pdf ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 7eada697c0ce4a45a905ee4a796cc674 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 61aadab7bffc4428bcbd709334288a28 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 1 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ overview ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_concept_index/51fc0f664e8e475cae64f9ca3d3c8966</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_concept_index</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>51fc0f664e8e475cae64f9ca3d3c8966</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>text/plain</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>content.txt</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>/download?index=kernel-memory-index&amp;documentId=km_concept_index&amp;filename=content.txt</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>Kernel Memory leverages vector storage to save the meaning of the documents ingested into the service, solutions like Azure AI Search, Qdrant, Elastic Search, Redis etc.\n",
       "\n",
       "Typically, storage solutions offer a maximum capacity for each collection, and often one needs to clearly separate data over distinct collections for security, privacy or other important reasons.\n",
       "\n",
       "In KM terms, these collection are called “indexes”.\n",
       "\n",
       "When storing information, when searching, and when asking questions, KM is always working within the boundaries of one index. Data in one index never leaks into other indexes.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.8017822</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:51:07Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_concept_index ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ text/plain ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 51fc0f664e8e475cae64f9ca3d3c8966 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 135bb5bd97234a31a3d5664350fedda7 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ concept ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr><tr><td>2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_concept_document/fdebc7160637495e95760520aaae284f</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_concept_document</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>fdebc7160637495e95760520aaae284f</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>text/x-uri</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>content.url</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>https://raw.githubusercontent.com/microsoft/kernel-memory/refs/heads/main/docs/concepts/document.md</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>---\n",
       "nav_order: 2\n",
       "parent: Concepts\n",
       "title: Document\n",
       "permalink: /concepts/document\n",
       "layout: default\n",
       "---\n",
       "# Document\n",
       "\n",
       "When uploading information into KM, the data is always packaged as a document.\n",
       "\n",
       "A document can consist of a URL to a web page to download, one or more files,\n",
       "including images, or just a string to be stored.\n",
       "\n",
       "Regardless of source and format, a client stores documents.\n",
       "\n",
       "When searching and asking questions, you can specify the scope of the search,\n",
       "e.g. whether to consider an entire index, just a document, or maybe just one of\n",
       "the files in a document.\n",
       "\n",
       "One important aspect to highlight is that documents have one unique ID, that you\n",
       "can either assign or is automatically assigned by the system. This ID allows to\n",
       "update the same files, without the risk of duplicating memories, and to delete\n",
       "the information at any moment.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.7300163</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:51:35Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_concept_document ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ text/x-uri ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ fdebc7160637495e95760520aaae284f ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ cdabfa7447874b189f6a50d578697043 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ concept ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details><style>\r\n",
       ".dni-code-hint {\r\n",
       "    font-style: italic;\r\n",
       "    overflow: hidden;\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview {\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview td {\r\n",
       "    vertical-align: top;\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "details.dni-treeview {\r\n",
       "    padding-left: 1em;\r\n",
       "}\r\n",
       "table td {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "table tr { \r\n",
       "    vertical-align: top; \r\n",
       "    margin: 0em 0px;\r\n",
       "}\r\n",
       "table tr td pre \r\n",
       "{ \r\n",
       "    vertical-align: top !important; \r\n",
       "    margin: 0em 0px !important;\r\n",
       "} \r\n",
       "table th {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "</style>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "// 记忆检索\n",
    "var searchResult = await memory.SearchAsync(\n",
    "    query: \"What is Kernel Memory?\", \n",
    "    index: \"kernel-memory-index\",\n",
    "    filters: tagsFilter);\n",
    "\n",
    "searchResult.Display();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 混合过滤"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<details open=\"open\" class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Kernel Memory (KM) is a service that utilizes vector storage to save the meaning of documents that are ingested into the system. It works with various storage solutions like Azure AI Search, Qdrant, Elastic Search, and Redis. In KM, data is organized into collections known as &quot;indexes,&quot; which are us...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>StreamState</td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td>Question</td><td><div class=\"dni-plaintext\"><pre>What is Kernel Memory?</pre></div></td></tr><tr><td>NoResult</td><td><div class=\"dni-plaintext\"><pre>False</pre></div></td></tr><tr><td>NoResultReason</td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td>Result</td><td><div class=\"dni-plaintext\"><pre>Kernel Memory (KM) is a service that utilizes vector storage to save the meaning of documents that are ingested into the system. It works with various storage solutions like Azure AI Search, Qdrant, Elastic Search, and Redis. In KM, data is organized into collections known as &quot;indexes,&quot; which are used to separate data for reasons such as security and privacy. Each index operates independently, ensuring that data from one index does not leak into another.\n",
       "\n",
       "When information is uploaded into KM, it is packaged as a document. A document can include a URL, one or more files (including images), or a simple string. Each document is assigned a unique ID, which can be used to update or delete the document without duplicating data. When searching or asking questions, users can specify the scope of the search, such as an entire index, a specific document, or a particular file within a document.</pre></div></td></tr><tr><td>TokenUsage</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.TokenUsage</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Timestamp</td><td><span>2025-04-03 02:58:22Z</span></td></tr><tr><td>ServiceType</td><td><div class=\"dni-plaintext\"><pre>Azure OpenAI</pre></div></td></tr><tr><td>ModelType</td><td><div class=\"dni-plaintext\"><pre>TextGeneration</pre></div></td></tr><tr><td>ModelName</td><td><div class=\"dni-plaintext\"><pre>gpt-4o</pre></div></td></tr><tr><td>TokenizerTokensIn</td><td><div class=\"dni-plaintext\"><pre>396</pre></div></td></tr><tr><td>TokenizerTokensOut</td><td><div class=\"dni-plaintext\"><pre>181</pre></div></td></tr><tr><td>ServiceTokensIn</td><td><div class=\"dni-plaintext\"><pre>400</pre></div></td></tr><tr><td>ServiceTokensOut</td><td><div class=\"dni-plaintext\"><pre>182</pre></div></td></tr><tr><td>ServiceReasoningTokens</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>RelevantSources</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_concept_index/51fc0f664e8e475cae64f9ca3d3c8966</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_concept_index</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>51fc0f664e8e475cae64f9ca3d3c8966</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>text/plain</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>content.txt</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>/download?index=kernel-memory-index&amp;documentId=km_concept_index&amp;filename=content.txt</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>Kernel Memory leverages vector storage to save the meaning of the documents ingested into the service, solutions like Azure AI Search, Qdrant, Elastic Search, Redis etc.\n",
       "\n",
       "Typically, storage solutions offer a maximum capacity for each collection, and often one needs to clearly separate data over distinct collections for security, privacy or other important reasons.\n",
       "\n",
       "In KM terms, these collection are called “indexes”.\n",
       "\n",
       "When storing information, when searching, and when asking questions, KM is always working within the boundaries of one index. Data in one index never leaks into other indexes.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.8017822</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:51:07Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_concept_index ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ text/plain ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 51fc0f664e8e475cae64f9ca3d3c8966 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 135bb5bd97234a31a3d5664350fedda7 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ concept ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_concept_document/fdebc7160637495e95760520aaae284f</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_concept_document</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>fdebc7160637495e95760520aaae284f</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>text/x-uri</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>content.url</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>https://raw.githubusercontent.com/microsoft/kernel-memory/refs/heads/main/docs/concepts/document.md</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>---\n",
       "nav_order: 2\n",
       "parent: Concepts\n",
       "title: Document\n",
       "permalink: /concepts/document\n",
       "layout: default\n",
       "---\n",
       "# Document\n",
       "\n",
       "When uploading information into KM, the data is always packaged as a document.\n",
       "\n",
       "A document can consist of a URL to a web page to download, one or more files,\n",
       "including images, or just a string to be stored.\n",
       "\n",
       "Regardless of source and format, a client stores documents.\n",
       "\n",
       "When searching and asking questions, you can specify the scope of the search,\n",
       "e.g. whether to consider an entire index, just a document, or maybe just one of\n",
       "the files in a document.\n",
       "\n",
       "One important aspect to highlight is that documents have one unique ID, that you\n",
       "can either assign or is automatically assigned by the system. This ID allows to\n",
       "update the same files, without the risk of duplicating memories, and to delete\n",
       "the information at any moment.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.7300163</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:51:35Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_concept_document ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ text/x-uri ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ fdebc7160637495e95760520aaae284f ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ cdabfa7447874b189f6a50d578697043 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ concept ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details><style>\r\n",
       ".dni-code-hint {\r\n",
       "    font-style: italic;\r\n",
       "    overflow: hidden;\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview {\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview td {\r\n",
       "    vertical-align: top;\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "details.dni-treeview {\r\n",
       "    padding-left: 1em;\r\n",
       "}\r\n",
       "table td {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "table tr { \r\n",
       "    vertical-align: top; \r\n",
       "    margin: 0em 0px;\r\n",
       "}\r\n",
       "table tr td pre \r\n",
       "{ \r\n",
       "    vertical-align: top !important; \r\n",
       "    margin: 0em 0px !important;\r\n",
       "} \r\n",
       "table th {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "</style>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "var mixedFilter = new List<MemoryFilter>()\n",
    "{\n",
    "    MemoryFilters.ByDocument(\"km_concept_index\"),\n",
    "    MemoryFilters.ByTag(\"type\", \"concept\")\n",
    "};\n",
    "\n",
    "// 记忆问答\n",
    "var answer = await memory.AskAsync(\n",
    "    question: \"What is Kernel Memory?\", \n",
    "    index: \"kernel-memory-index\", \n",
    "    filters: mixedFilter);\n",
    "\n",
    "answer.Display();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<details open=\"open\" class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.SearchResult</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Query</td><td><div class=\"dni-plaintext\"><pre>What is Kernel Memory?</pre></div></td></tr><tr><td>NoResult</td><td><div class=\"dni-plaintext\"><pre>False</pre></div></td></tr><tr><td>Results</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_concept_index/51fc0f664e8e475cae64f9ca3d3c8966</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_concept_index</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>51fc0f664e8e475cae64f9ca3d3c8966</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>text/plain</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>content.txt</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>/download?index=kernel-memory-index&amp;documentId=km_concept_index&amp;filename=content.txt</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>Kernel Memory leverages vector storage to save the meaning of the documents ingested into the service, solutions like Azure AI Search, Qdrant, Elastic Search, Redis etc.\n",
       "\n",
       "Typically, storage solutions offer a maximum capacity for each collection, and often one needs to clearly separate data over distinct collections for security, privacy or other important reasons.\n",
       "\n",
       "In KM terms, these collection are called “indexes”.\n",
       "\n",
       "When storing information, when searching, and when asking questions, KM is always working within the boundaries of one index. Data in one index never leaks into other indexes.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.8017822</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:51:07Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_concept_index ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ text/plain ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ 51fc0f664e8e475cae64f9ca3d3c8966 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ 135bb5bd97234a31a3d5664350fedda7 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ concept ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Link</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index/km_concept_document/fdebc7160637495e95760520aaae284f</pre></div></td></tr><tr><td>Index</td><td><div class=\"dni-plaintext\"><pre>kernel-memory-index</pre></div></td></tr><tr><td>DocumentId</td><td><div class=\"dni-plaintext\"><pre>km_concept_document</pre></div></td></tr><tr><td>FileId</td><td><div class=\"dni-plaintext\"><pre>fdebc7160637495e95760520aaae284f</pre></div></td></tr><tr><td>SourceContentType</td><td><div class=\"dni-plaintext\"><pre>text/x-uri</pre></div></td></tr><tr><td>SourceName</td><td><div class=\"dni-plaintext\"><pre>content.url</pre></div></td></tr><tr><td>SourceUrl</td><td><div class=\"dni-plaintext\"><pre>https://raw.githubusercontent.com/microsoft/kernel-memory/refs/heads/main/docs/concepts/document.md</pre></div></td></tr><tr><td>Partitions</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Microsoft.KernelMemory.Citation+Partition</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Text</td><td><div class=\"dni-plaintext\"><pre>---\n",
       "nav_order: 2\n",
       "parent: Concepts\n",
       "title: Document\n",
       "permalink: /concepts/document\n",
       "layout: default\n",
       "---\n",
       "# Document\n",
       "\n",
       "When uploading information into KM, the data is always packaged as a document.\n",
       "\n",
       "A document can consist of a URL to a web page to download, one or more files,\n",
       "including images, or just a string to be stored.\n",
       "\n",
       "Regardless of source and format, a client stores documents.\n",
       "\n",
       "When searching and asking questions, you can specify the scope of the search,\n",
       "e.g. whether to consider an entire index, just a document, or maybe just one of\n",
       "the files in a document.\n",
       "\n",
       "One important aspect to highlight is that documents have one unique ID, that you\n",
       "can either assign or is automatically assigned by the system. This ID allows to\n",
       "update the same files, without the risk of duplicating memories, and to delete\n",
       "the information at any moment.</pre></div></td></tr><tr><td>Relevance</td><td><div class=\"dni-plaintext\"><pre>0.7300163</pre></div></td></tr><tr><td>PartitionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>SectionNumber</td><td><div class=\"dni-plaintext\"><pre>0</pre></div></td></tr><tr><td>LastUpdate</td><td><span>2025-04-02 18:51:35Z</span></td></tr><tr><td>Tags</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><tbody><tr><td><div class=\"dni-plaintext\"><pre>__document_id</pre></div></td><td>[ km_concept_document ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_type</pre></div></td><td>[ text/x-uri ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_id</pre></div></td><td>[ fdebc7160637495e95760520aaae284f ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__file_part</pre></div></td><td>[ cdabfa7447874b189f6a50d578697043 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__part_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>__sect_n</pre></div></td><td>[ 0 ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>about</pre></div></td><td>[ km ]</td></tr><tr><td><div class=\"dni-plaintext\"><pre>type</pre></div></td><td>[ concept ]</td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table></div></details><style>\r\n",
       ".dni-code-hint {\r\n",
       "    font-style: italic;\r\n",
       "    overflow: hidden;\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview {\r\n",
       "    white-space: nowrap;\r\n",
       "}\r\n",
       ".dni-treeview td {\r\n",
       "    vertical-align: top;\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "details.dni-treeview {\r\n",
       "    padding-left: 1em;\r\n",
       "}\r\n",
       "table td {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "table tr { \r\n",
       "    vertical-align: top; \r\n",
       "    margin: 0em 0px;\r\n",
       "}\r\n",
       "table tr td pre \r\n",
       "{ \r\n",
       "    vertical-align: top !important; \r\n",
       "    margin: 0em 0px !important;\r\n",
       "} \r\n",
       "table th {\r\n",
       "    text-align: start;\r\n",
       "}\r\n",
       "</style>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "// 记忆检索\n",
    "var searchResult = await memory.SearchAsync(\n",
    "    query: \"What is Kernel Memory?\", \n",
    "    index: \"kernel-memory-index\",\n",
    "    filters: mixedFilter);\n",
    "\n",
    "searchResult.Display();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 清除记忆\n",
    "有两种方式清除记忆：\n",
    "1. DeleteDocumentAsync：用于删除指定索引下的文档记忆，未指定索引时，默认删除`default`下的文档。\n",
    "2. DeleteIndexAsync：用于删除指定索引下的所有记忆。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "// 通过文档Id 删除指定文档记忆\n",
    "await memory.DeleteDocumentAsync(documentId: \"km_overview\", index: \"kernel-memory-index\");"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    },
    "vscode": {
     "languageId": "polyglot-notebook"
    }
   },
   "outputs": [],
   "source": [
    "// 通过索引名删除指定索引记忆\n",
    "await memory.DeleteIndexAsync(index: \"kernel-memory-index\");"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".NET (C#)",
   "language": "C#",
   "name": ".net-csharp"
  },
  "language_info": {
   "name": "csharp"
  },
  "polyglot_notebook": {
   "kernelInfo": {
    "defaultKernelName": "csharp",
    "items": [
     {
      "aliases": [],
      "name": "csharp"
     }
    ]
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
